c# - 为什么 Azure Function 应用程序中使用的 Microsoft.Azure.WebJobs.HttpTriggerAttribute 是参数属性而不是方法属性?

标签 c# azure .net-core azure-webjobs

我有一个 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)

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

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

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

最佳答案

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

标准C#类库函数示例:https://learn.microsoft.com/en-us/azure/azure-functions/functions-bindings-example#class-library-example

关于c# - 为什么 Azure Function 应用程序中使用的 Microsoft.Azure.WebJobs.HttpTriggerAttribute 是参数属性而不是方法属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60234655/

相关文章:

c# - 给定一个 CloudTableQuery/DataServiceQuery,返回关联的 TableServiceContext

c# - 带参数的基本 BackgroundWorker 用法

c# - 需要重启IIS才能获取sql连接

azure - 我们如何在一个域名下使用多个 Azure Web 应用程序,每个应用程序具有不同的框架,而不使用子域?

azure - 当不是 ASP.NET Web 项目时,如何将 ASP.NET 网站发布到 Azure

c# - 在 asp.net core 2.1 上使用 Hangfire 发送电子邮件

.net-core - Visual Studio 2017 Update 3-找不到指定的SDK 'Microsoft.NET.Sdk.Web'

.net - 如何使用.net Core设置AWS凭证

c# - 如何从 SQL 开放时间数据库查找接下来 (n) 个开放日

c# - (OAuthException) 必须使用事件访问 token 来查询有关当前用户的信息