Azure Functions HTTP 触发器和绑定概述

Azure Functions 可以通过 HTTP 请求调用,以构建无服务器 API 并响应 Webhook。

操作 类型
通过 HTTP 请求运行函数 触发器
从函数返回 HTTP 响应 输出绑定

安装扩展

你安装的扩展 NuGet 包取决于你在函数应用中使用的 C# 模式:

函数在独立的 C# 工作进程中执行。 若要了解详细信息,请参阅有关在独立工作进程中运行 C# Azure Functions 的指南。

通过安装 NuGet 包版本 3.x 将扩展添加到项目。

注意

.NET 独立中的 ASP.NET Core 集成需要额外的扩展包

安装捆绑包

若要能够在应用中使用此绑定扩展,请确保项目的根目录中 host.json 文件包含以下 extensionBundle 引用:

{
    "version": "2.0",
    "extensionBundle": {
        "id": "Microsoft.Azure.Functions.ExtensionBundle",
        "version": "[4.0.0, 5.0.0)"
    }
}

在此示例中,version[4.0.0, 5.0.0)值指示 Functions 主机使用至少4.0.0小于但小于5.0.0的捆绑包版本,其中包括所有可能的 4.x 版本。 此表示法有效地在 v4.x 扩展捆绑包的最新可用次要版本上维护应用。

如果可能,应使用最新的扩展捆绑包主版本,并允许运行时自动维护最新的次要版本。 可以在 扩展捆绑包发布页上查看最新捆绑包的内容。 有关详细信息,请参阅 Azure Functions 扩展捆绑包。

host.json 设置

本部分介绍版本 2.x 及更高版本中此绑定可用的配置设置。 host.json 文件中的设置将应用于函数应用实例中的所有函数。 有关函数应用配置设置的详细信息,请参阅 Azure Functions 的host.json 参考。

{
    "extensions": {
        "http": {
            "routePrefix": "api",
            "maxOutstandingRequests": 200,
            "maxConcurrentRequests": 100,
            "dynamicThrottlesEnabled": true,
            "hsts": {
                "isEnabled": true,
                "maxAge": "10"
            },
            "customHeaders": {
                "X-Content-Type-Options": "nosniff"
            }
        }
    }
}
属性 默认 说明
customHeaders 无 使你可以在 HTTP 响应中设置自定义标头。 前面的示例将 X-Content-Type-Options 标头添加到响应中,以避免内容类型探查。 此自定义标头适用于函数应用中的所有 HTTP 触发函数。
dynamicThrottlesEnabled 真* 启用时,此设置将导致请求处理管道,以定期检查系统性能计数器(如 connections/threads/processes/memory/cpu/etc),并且如果这些计数器中的任何一个超过内置的高阈值 (80%),请求将以 429 "Too Busy" 响应被拒绝,直到计数器恢复正常水平。
*消耗计划中的默认值为 true。 高级计划和专用计划中的默认值为 false。
hsts 未启用 isEnabled 设置为 true 时,将强制执行 .NET Core 的 HTTP 严格传输安全性 (HSTS) 行为,如 HstsOptions 类中所定义。 上面的示例还将 maxAge 属性设置为 10 天。 hsts 支持的属性包括:
属性说明
excludedHosts未添加 HSTS 标头的主机名的字符串数组。
includeSubDomains布尔值,指示是否启用了 Strict-Transport-Security 标头的 includeSubDomain 参数。
maxAge定义 Strict-Transport-Security 标头的 max-age 参数的字符串。
预加载布尔值,指示是否启用了 Strict-Transport-Security 标头的 preload 参数。
maxConcurrentRequests 100* 并行执行的 HTTP 函数数目上限。 此值允许你控制并发性,从而帮助管理资源利用率。 例如,某个 HTTP 函数可能使用了大量系统资源(内存/CPU/插槽),从而在并发性过高时导致问题。 或者,某个函数向第三方服务发出出站请求,则可能需要限制这些调用的速率。 在这种情况下,应用限制可能有帮助。
*消耗计划的默认值为 100。 高级计划和专用计划的默认值是无界的 (-1)。
maxOutstandingRequests 200* 在任意给定时间搁置的未完成请求数上限。 此限制包括已排队但尚未开始执行的请求,以及正在执行的所有请求。 超出此限制的任何传入请求将被拒绝,并返回 429“太忙”响应。 允许调用方使用基于时间的重试策略,还可帮助控制最大请求延迟。 此设置仅控制脚本宿主执行路径中发生的排队。 其他队列(例如 ASP.NET 请求队列)仍有效,不受此设置的影响。
*消耗计划的默认值为 200。 高级计划和专用计划的默认值是无界的 (-1)。
routePrefix api 应用到所有路由的路由前缀。 使用空字符串可删除默认前缀。

后续步骤