你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
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 支持的属性包括:
|
||||||||||
| maxConcurrentRequests | 100* | 并行执行的 HTTP 函数数目上限。 此值允许你控制并发性,从而帮助管理资源利用率。 例如,某个 HTTP 函数可能使用了大量系统资源(内存/CPU/插槽),从而在并发性过高时导致问题。 或者,某个函数向第三方服务发出出站请求,则可能需要限制这些调用的速率。 在这种情况下,应用限制可能有帮助。 *消耗计划的默认值为 100。 高级计划和专用计划的默认值是无界的 ( -1)。 |
||||||||||
| maxOutstandingRequests | 200* | 在任意给定时间搁置的未完成请求数上限。 此限制包括已排队但尚未开始执行的请求,以及正在执行的所有请求。 超出此限制的任何传入请求将被拒绝,并返回 429“太忙”响应。 允许调用方使用基于时间的重试策略,还可帮助控制最大请求延迟。 此设置仅控制脚本宿主执行路径中发生的排队。 其他队列(例如 ASP.NET 请求队列)仍有效,不受此设置的影响。 *消耗计划的默认值为 200。 高级计划和专用计划的默认值是无界的 ( -1)。 |
||||||||||
| routePrefix | API(应用程序编程接口) | 应用到所有路由的路由前缀。 使用空字符串可删除默认前缀。 |