Azure Functions - 返回类型 HttpResponseMessage 和 IActionResult 之间的差异

Rak*_*mar 3 c# azure azure-functions

我已经创建了 Http 触发器 Azure Function,其默认返回类型是Task<IActionResult>.

如果我改成有什么区别吗Task<HttpResponseMessage>

具有返回类型的 Azure 函数Task<IActionResult>

 public static async Task<IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Function, "post", Route = null)] HttpRequest req,
Run Code Online (Sandbox Code Playgroud)

Azure 函数具有Task<HttpResponseMessage>

 public static async Task<HttpResponseMessage> Run(
            [HttpTrigger(AuthorizationLevel.Function, "post", Route = null)]
            HttpRequestMessage message,
Run Code Online (Sandbox Code Playgroud)

小智 7

Task<IActionResult>如果我改成有什么区别吗Task<HttpResponseMessage>

您可以使用Task<HttpResponseMessage>作为函数的返回类型。执行起来应该没有问题。

话虽如此,使用两者之间的区别仅在于从函数返回响应的方式。

  • 对于某种IActionResult类型的响应,构建响应时需要编写的代码较少,并且使单元测试更简单。
  • 另一方面,HttpResponseMessage对通过网络发送的 Http 响应消息提供更多控制。

就像旁注一样,

HttpTriggerAzure function中v1.0,类型Task<HttpResponseMessage>HttpRequestMessage分别用作返回类型和请求类型的默认值。

从那时v2.0起,类型Task<IActionResult>HttpRequest分别被用作默认返回类型和请求类型,因为它符合 .net core API 结构。