为什么在Azure函数应用程序中使用Microsoft.Azure.WebJobs.HttpTriggerAttribute是参数属性而不是方法属性?

问题描述 投票:0回答:1

我有一个Azure Functions应用。

令我惊讶的是,在定义Azure WebJob函数时,不必将HttpTriggerAttribute应用于HttpRequest参数。

所以这是有效的,并且与大多数教程和示例匹配,

[FunctionName("get")]
public async Task<IActionResult> Get(
      [HttpTrigger(AuthorizationLevel.Anonymous, nameof(HttpMethods.Get), Route = "api/get")]HttpRequest httpRequest)

这也是有效的,

[FunctionName("post")]
public async Task<IActionResult> Post(
      [HttpTrigger(AuthorizationLevel.Anonymous, nameof(HttpMethods.Post), Route = "api/post")]MyType body)

由于该属性未绑定到HttpRequest参数,我很惊讶该属性是参数属性,而不是方法属性,

[FunctionName("post")]
[HttpTrigger(AuthorizationLevel.Anonymous, nameof(HttpMethods.Post), Route = "api/post")]
public async Task<IActionResult> Post(MyType body)

为什么将HttpTriggerAttribute实现为参数属性而不是像FunctionNameAttribute这样的方法属性?

c# azure .net-core azure-webjobs
1个回答
1
投票

对于C#类库的开发,FunctionName充当标记,将方法标记为函数入口点。它不涉及功能的输入。但是,触发属性是不同的。它不仅具有标记功能类型的功能,而且还具有将输入数据绑定到方法参数的作用。处理该方法时需要这些数据。您可以将trigger属性视为类型为“ direction in”的绑定。这种绑定类型需要在C#类库的开发方法中作为参数输入。类型“方向输出”的绑定在函数外部定义为输出。它的特点是。

标准C#类库功能示例:https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-example#class-library-example

© www.soinside.com 2019 - 2024. All rights reserved.