Tom*_*ana 13 c# azure azure-functions asp.net-core-2.1
我有一个 Azure Function 2.x,它驻留在一个看起来像这样的静态类上
[FunctionName("Register")]
public static async Task<IActionResult> Run([HttpTrigger(AuthorizationLevel.Anonymous, "post")]HttpRequest req, ILogger log)
{
MyTypeClass defReturn = new MyTypeClass();
HttpStatusCode defCode = HttpStatusCode.BadRequest;
/*
* Logics that might or might not changes
* defReturn and defCode value
*/
return StatusCode((int) defCode, JsonConvert.SerializeObject(defReturn))
}
Run Code Online (Sandbox Code Playgroud)
我怎样才能实现这个return StatusCode((int) defCode, JsonConvert.SerializeObject(defReturn))部分?Azure Functions 2.x 中是否有任何此类方法或等效方法?
在 Azure Functions 1.xi 中可以做等效的req.CreateResponse(defCode, defReturn)where reqis HttpRequestMessage,但我试图坚持使用 2.x 模板/标准
附加说明:所述代码应将HTTP 400 Bad Request其defReturn作为响应正文返回给客户端。但是,当我改变defCode到HttpStatusCode.Accepted,它应该返回HTTP 202 Accepted有相同的反应体。我怎样才能做到这一点?
附加说明#2:(如果我没记错的话)在 ASP.NET Core 1.xi 中完全可以这样做,IActionResult通过调用静态方法StatusCodenot StatusCodes(它是一个包含 HTTP 代码常量的静态类)返回
谢谢
auX*_*auX 24
回复很晚,但我今天遇到了同样的问题,所以也许这对其他搜索者有帮助
选项 1:默认代码
这在博客上有详细说明这里
一些代码如 200 和 400 是预定义的,可以由
return new OkObjectResult("Your message"); // 200
return new BadRequestObjectResult("Your error message"); // 400
Run Code Online (Sandbox Code Playgroud)
这些功能并非适用于所有已知的状态代码,而是一些最常见的状态代码。
选项 2:手动设置代码
如果您需要默认不提供的特定代码,您可以使用基类并自己创建它们。
例如,要实现茶壶响应,您可以使用
using Microsoft.AspNetCore.Http;
var result = new ObjectResult("Your message");
result.StatusCode = StatusCodes.Status418ImATeapot;
return result;
Run Code Online (Sandbox Code Playgroud)
在这个例子中,Statuscode 是从 StatusCodes 类中使用的,但您也可以使用输入其他代码(通常,只需坚持这些代码)
此外,如果需要,ObjectResult 类还提供其他格式选项。