Important
Azure Functions 运行时 1.x 版本的支持于 2026 年 9 月 14 日终止。 将应用迁移到版本 4.x ,以获取完全支持。
本文保留了仍使用运行时1.x函数应用的关键历史信息和详细参考链接。 不要用运行时1.x来做新功能应用。
运行时1.x范围
Azure Functions 运行时 1.x 于2026年9月14日结束支持,不支持新建或现有函数应用。 运行时1.x具有以下特性:
- 它只在Windows上运行。
- 它支持针对 .NET Framework 和 JavaScript 应用的 C# 应用。
- C# 应用在进程中运行。 运行时 1.x 不支持隔离工作者模型。
- 它使用了 Azure Functions Core Tools 1.x 版本进行本地开发。 Core Tools 1.x 仅能在 Windows 上运行。
- 运行时包含了其支持的绑定。 后续运行时版本使用独立版本的绑定扩展或扩展包。
运行时、扩展和编程模型版本
Azure Functions 运行时版本与绑定扩展、扩展包或语言编程模型所使用的版本不同。 另一个组件的版本标签并不表示应用使用 Azure Functions 运行时 1.x。 例如:
- Python v1 和 v2 编程模型运行于 4.x 运行时。
- Node.js v3 和 v4 编程模型运行于 4.x 运行时。
- 扩展包和绑定扩展包版本独立于运行时版本。
迁移到运行时4.x
要让应用恢复到完全支持,可以把 它从运行时1.x迁移到运行时4.x。 迁移指南涵盖了以下任务:
- 识别针对运行时1.x的应用。
- 选择支持的 C# 或 JavaScript 目标。
- 更新项目、绑定、应用设置和 host.json 文件。
- 本地测试应用,并在 Azure 中更新函数应用。
不要只 FUNCTIONS_EXTENSION_VERSION 更改应用设置。 运行时升级可能需要项目、代码、绑定和配置的变更。
适用于运行时1.x的应用设置
该弃 AzureWebJobsDashboard 用设置仅由运行时1.x支持。 它包含一个可选的通用存储账户连接字符串,用于存储日志并在Azure门户的Monitor标签中显示日志。
| Key | 示例值 |
|---|---|
AzureWebJobsDashboard |
DefaultEndpointsProtocol=https;AccountName=... |
运行时1.x不支持应用 AZURE_FUNCTIONS_ENVIRONMENT 设置。
该 FUNCTIONS_EXTENSION_VERSION 值 ~1 将函数应用钉在运行时1.x。 文件系统密钥存储(AzureWebJobsSecretStorageType=files)是默认设置。
functionsRuntimeAdminIsolationEnabled该网站属性在运行时1.x版本中不可用。 这个 FUNCTIONS_V2_COMPATIBILITY_MODE 设置不适用于运行时1.x的应用。
Project与语言差异
运行时 1.x 的 C# 类库项目针对 .NET 框架,使用了该Microsoft.NET.Sdk.Functions包的 1.x 版本。 它们可以用 TraceWriter 来伐木。 关于当前的 C# 项目模型和迁移考虑,请参见 .NET 类库开发指南和运行时 1.x 迁移指南。
C# 类库项目
以下示例展示了运行时1.x项目文件的相关部分:
<PropertyGroup>
<TargetFramework>net48</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.NET.Sdk.Functions" Version="1.0.24" />
</ItemGroup>
Microsoft.NET.Sdk.Functions包依赖包括触发器和绑定。 1.x 项目指的是 1.x 触发器和绑定,因为它们针对 .NET 框架。 该封包还依赖于并间接依赖Newtonsoft.Json于。WindowsAzure.Storage 这些依赖确保项目使用与目标 Functions 运行时兼容的版本。 例如,面向 .NET Framework 4.6.1 的 Functions 运行时兼容 Newtonsoft.Json 9.0.1,而非版本 11。
运行时1.x用于 TraceWriter Application Insights日志。
TraceWriter 不支持结构化日志。
以下示例创建 和 TelemetryClient ,使用 TrackEvent、 TrackMetric和 TrackDependency 来记录自定义遥测。 它还利用函数执行上下文将自定义遥测数据与当前调用关联起来。
自定义遥测示例
using System;
using System.Linq;
using System.Net.Http;
using System.Threading.Tasks;
using Microsoft.ApplicationInsights;
using Microsoft.ApplicationInsights.DataContracts;
using Microsoft.ApplicationInsights.Extensibility;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.Extensions.Logging;
namespace functionapp0915
{
public static class HttpTrigger2
{
private static string key = TelemetryConfiguration.Active.InstrumentationKey =
Environment.GetEnvironmentVariable(
"APPINSIGHTS_INSTRUMENTATIONKEY", EnvironmentVariableTarget.Process);
private static TelemetryClient telemetryClient =
new TelemetryClient() { InstrumentationKey = key };
[FunctionName("HttpTrigger2")]
public static async Task<HttpResponseMessage> Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)]
HttpRequestMessage req, ExecutionContext context, ILogger log)
{
log.LogInformation("C# HTTP trigger function processed a request.");
DateTime start = DateTime.UtcNow;
string name = req.GetQueryNameValuePairs()
.FirstOrDefault(q => string.Compare(q.Key, "name", true) == 0)
.Value;
dynamic data = await req.Content.ReadAsAsync<object>();
name = name ?? data?.name;
var evt = new EventTelemetry("Function called");
UpdateTelemetryContext(evt.Context, context, name);
telemetryClient.TrackEvent(evt);
var metric = new MetricTelemetry("Test Metric", DateTime.Now.Millisecond);
UpdateTelemetryContext(metric.Context, context, name);
telemetryClient.TrackMetric(metric);
var dependency = new DependencyTelemetry
{
Name = "GET api/planets/1/",
Target = "swapi.co",
Data = "https://swapi.co/api/planets/1/",
Timestamp = start,
Duration = DateTime.UtcNow - start,
Success = true
};
UpdateTelemetryContext(dependency.Context, context, name);
telemetryClient.TrackDependency(dependency);
}
private static void UpdateTelemetryContext(
TelemetryContext context,
ExecutionContext functionContext,
string userName)
{
context.Operation.Id = functionContext.InvocationId.ToString();
context.Operation.ParentId = functionContext.InvocationId.ToString();
context.Operation.Name = functionContext.FunctionName;
context.User.Id = userName;
}
}
}
运行时 1.x 还支持 C# 脚本(.csx)和 JavaScript 函数。 C# 脚本并非专为运行时 1.x 开发者提供,所以请参考 C# 脚本开发者参考 作为通用脚本指导。 针对运行时的具体更改,请使用迁移指南。
关于早期 C# 语法的示例,请参见 运行时 1.x 函数模板。
C# 脚本程序集和包
在运行时 1.x C# 脚本函数中,你可以用简单名称引用以下汇编:
Newtonsoft.JsonMicrosoft.WindowsAzure.StorageMicrosoft.ServiceBusMicrosoft.AspNet.WebHooks.ReceiversMicrosoft.AspNet.WebHooks.Common
运行时1.x使用 project.json 文件定义依赖关系。 以下示例添加了 Microsoft.ProjectOxford.Face NuGet 包:
{
"frameworks": {
"net46": {
"dependencies": {
"Microsoft.ProjectOxford.Face": "1.1.0"
}
}
}
}
运行时1.x不支持扩展包。 要使用自定义 NuGet 订阅源,请在函数应用根文件夹中的 NuGet.Config 文件中指定订阅源。 有关详细信息,请参阅配置 NuGet 行为。
使用 Core Tools 1.x 进行本地开发
Azure Functions Core Tools 1.x 版本与运行时 1.x 配对,仅支持 Windows。 启动运行时时,你 func host start运行了 。 有关当前本地开发指导,请参见使用 Core Tools 本地开发 Azure Functions。
Visual Studio 将运行时 1.x 的核心工具版本存储在%USERPROFILE%\AppData\Local\Azure.Functions.Cli其中,并使用了存储在其中的最新版本。 运行项目时,你可以在控制台输出中看到所选版本:
[3/1/2018 9:59:53 AM] Starting Host (HostId=contoso2-1518597420, Version=2.0.11353.0, ProcessId=22020, Debug=False, Attempt=0, FunctionsExtensionVersion=)
运行时1.x host.json 参考
host.json 模式和设置在运行时1.x之后发生了变化。 在审查现有配置时,请参考 运行时1.x host.json 参考 ,迁移时与 当前 host.json 参考 进行比较。
用Application Insights监控运行时1.x应用
运行时1.x使用以下应用洞察日志类别:
| Category | Table | Description |
|---|---|---|
Function |
痕迹 | 用户生成的日志,可以是任何日志级别。 |
Host.Aggregator |
customMetrics | 在可配置时间段内调用函数调用的计数和平均值。 默认是30秒或1000个结果,以先到者为准。 这些日志被写入在 Information 级别。 |
Host.Executor |
痕迹 | 功能启动并完成日志。 成功运行使用 Information, 异常使用 Error, 以及诸如中毒队列消息等条件使用 Warning。 |
Host.Results |
请求 | 函数执行的成功或失败。 这些日志被写入在 Information 级别。 |
配置日志级别
运行时1.x在 host.json中配置日志logger.categoryFilter级别:
{
"logger": {
"categoryFilter": {
"defaultLevel": "Warning",
"categoryLevels": {
"Host.Results": "Information",
"Host.Aggregator": "Trace",
"Function": "Information"
}
}
}
}
当多个类别名称以同一字符串开头时,会优先匹配更具体的类别。 以下示例记录除该级别外Error的所有内容Host.Aggregator:
{
"logger": {
"categoryFilter": {
"defaultLevel": "Information",
"categoryLevels": {
"Host": "Error",
"Function": "Error",
"Host.Aggregator": "Information"
}
}
}
}
配置采样
默认的最大遥测速率为每秒五项。 运行时1.x对采样配置如下:applicationInsights.sampling
{
"applicationInsights": {
"sampling": {
"isEnabled": true,
"maxTelemetryItemsPerSecond": 5
}
}
}
以下示例结合了类别过滤和抽样:
{
"logger": {
"categoryFilter": {
"defaultLevel": "Warning",
"categoryLevels": {
"Function": "Error",
"Host.Aggregator": "Error",
"Host.Results": "Information",
"Host.Executor": "Warning"
}
}
},
"applicationInsights": {
"sampling": {
"isEnabled": true,
"maxTelemetryItemsPerSecond": 5
}
}
}
运行时1.x不支持每个函数配置。
应用洞察功能
运行时 1.x 会自动收集请求、异常和性能计数器。 它不会自动收集 HTTP、服务总线、Event Hubs 或 SQL 依赖。 它支持QuickPulse/Live Metrics,无需安全控制通道,并支持采样,但不支持心跳、服务总线或Event Hubs关联,也无法完全配置遥测收集。
运行时1.x中不支持的特性和行为
- 不支持重试政策。
- 不支持虚拟网络触发器的动态规模监控。
- 在高级和专用套餐中,默认的函数执行超时是无限制的。 在消费套餐中,默认超时为5分钟,最长为10分钟。
- 使用远程部署包的功能应用在没有 Azure 文件存储 共享的情况下无法运行。
运行时1.x中包含的绑定
Azure Functions运行时 1.x 已停用。 迁移到运行时 4.x 时,使用当前的绑定扩展或扩展包,并检查每个绑定是否有配置和类型的变化。
以下绑定包含在运行时 1.x 版本中。 C# 属性列显示代码中使用的简短名称。 对应的类名带有 Attribute 后缀,例如 BlobTriggerAttribute。 C# 脚本函数则在 function.json 文件中定义绑定。
| 类型 | Trigger | 输入 | Output | C# 属性 |
|---|---|---|---|---|
| Blob 存储 | Yes | Yes | Yes |
[BlobTrigger] (触发器)[Blob] (输入/输出) |
| Azure Cosmos DB | Yes | Yes | Yes |
[CosmosDBTrigger] (触发器)[DocumentDB] (输入/输出) |
| 事件网格 | Yes | No | No | [EventGridTrigger] |
| 事件中心 | Yes | No | Yes |
[EventHubTrigger] (触发器)[EventHub] (输出) |
| HTTP 和 网络钩子 | Yes | No | Yes | [HttpTrigger] |
| IoT 中心 | Yes | No | No | [EventHubTrigger] |
| 移动应用 | No | Yes | Yes | [MobileTable] |
| 通知中心 | No | No | Yes | [NotificationHub] |
| 队列存储 | Yes | No | Yes |
[QueueTrigger] (触发器)[Queue] (输出) |
| SendGrid | No | No | Yes | [SendGrid] |
| 服务总线 | Yes | No | Yes |
[ServiceBusTrigger] (触发器)[ServiceBus] (输出) |
| 表格存储 | No | Yes | Yes | [Table] |
| 定时器 | Yes | No | No | [TimerTrigger] |
使用运行时1.x的功能应用会自动引用Microsoft.Azure。WebJobs NuGet包(版本2.x)。
Blob 存储、队列存储和表存储的触发和绑定使用WindowsAzure.Storage NuGet包的7.2.1版本。 如果你引用不同版本的存储 SDK,并在函数签名中绑定到某个存储 SDK 类型,函数运行时可能会报告无法绑定到该类型。 确保你的项目引用的是WindowsAzure.Storage 7.2.1。
运行时 1.x 中的 Blob 存储 绑定
运行时1.x暴露了已弃用的Microsoft.WindowsAzure.存储命名空间的类型。 Azure 更新的类型。Storage.Blobs 需要后续扩展和运行时 4.x。
运行时1.x中的队列存储绑定
运行时1.x暴露了已弃用的Microsoft.WindowsAzure.存储命名空间的类型。 Azure 更新的类型。存储。队列需要后续扩展和运行时 4.x。
关于队列存储绑定设置,请参见 运行时1.x host.json 参考中的队列部分。 在运行时 1.x 中,设置 maxPollingInterval 以毫秒表示。 在后续运行时版本中,其数据类型为 TimeSpan。
运行时1.x中的表存储绑定
运行时1.x暴露了已弃用的Microsoft.WindowsAzure.Storage.Table命名空间的类型。 Azure 的更新类型。Data.Tables 需要 Azure Tables 扩展和运行时 4.x。
输入示例
以下 C# 函数读取单个表格行。 每发送到队列的消息,该函数都会被触发。 行键值 {queueTrigger} 将行键绑定到消息元数据(即消息字符串)。
public class TableStorage
{
public class MyPoco
{
public string PartitionKey { get; set; }
public string RowKey { get; set; }
public string Text { get; set; }
}
[FunctionName("TableInput")]
public static void TableInput(
[QueueTrigger("table-items")] string input,
[Table("MyTable", "MyPartition", "{queueTrigger}")] MyPoco poco,
ILogger log)
{
log.LogInformation($"PK={poco.PartitionKey}, RK={poco.RowKey}, Text={poco.Text}");
}
}
以下 C# 函数读取多个表行, MyPoco 其中类源自 TableEntity。
public class TableStorage
{
public class MyPoco : TableEntity
{
public string Text { get; set; }
}
[FunctionName("TableInput")]
public static void TableInput(
[QueueTrigger("table-items")] string input,
[Table("MyTable", "MyPartition")] IQueryable<MyPoco> pocos,
ILogger log)
{
foreach (MyPoco poco in pocos)
{
log.LogInformation($"PK={poco.PartitionKey}, RK={poco.RowKey}, Text={poco.Text}");
}
}
}
输入使用
若要按键返回特定实体,请使用派生自 TableEntity 的绑定参数。 具体 TableName的 、 PartitionKey和 RowKey 用于尝试从表中获得特定实体。
若要执行可返回多个实体的查询,请绑定到 IQueryable<T>(其类型继承自 TableEntity)。
输出使用
out 参数和返回类型支持以下类型:
- 包含
PartitionKey和RowKey属性的普通旧 CLR 对象 (POCO)。 可以通过实现ITableEntity或继承TableEntity来随附这些属性。 -
ICollector<T>或IAsyncCollector<T>,其中T包括PartitionKey和RowKey属性。 可以通过实现ITableEntity或继承TableEntity来随附这些属性。
还可以作为方法参数CloudTable 绑定到 。 然后,可以使用该对象写入到表。
运行时1.x 中的Event Hubs bindings
运行时 1.x 包含了事件中心绑定,不需要单独扩展。 它暴露了已弃用的 Microsoft.Azure.EventHubs.EventData 类型。 事件中心触发器支持 EventData、可序列化的类型、 string和 , byte[] 针对单个事件,以及 EventData[] 和 string[] 处理批次。 支持 EventData的输出绑定、可序列化的JSON类型、 string和 byte[]。
对于事件枢纽触发器或输出绑定, function.json中的运行时 1.x 使用该 path 属性作为事件中心名称。 后续运行时版本使用 eventHubName. 当事件枢纽名称也出现在连接字符串中时,该值在运行时会覆盖该属性。
运行时 1.x host.json 文件使用顶层 eventHub 对象:
{
"eventHub": {
"maxBatchSize": 64,
"prefetchCount": 256,
"batchCheckpointFrequency": 1
}
}
| Property | Default | Description |
|---|---|---|
maxBatchSize |
64 | 每个接收循环收到的最大事件计数。 |
prefetchCount |
300 | 基础 EventProcessorHost 使用的默认预提取计数。 |
batchCheckpointFrequency |
1 | 创建事件中心游标检查点之前要处理的事件批处理数。 |
完整配置参考,请参见 eventHub 运行时1.x host.json 参考部分。
运行时 1.x 中的事件网格绑定
3.x 之前的 Event Grid 扩展版本不支持 CloudEvents 模式。 要使用该模式,可以使用 HTTP 触发器或迁移到 Runtime 4.x 和 Event Grid 扩展 3.x。
事件网格输出绑定仅适用于运行时2.x及以上版本。
绑定类型
运行时1.x扩展支持以下参数类型。 它不支持 CloudEvents 模式,而 CloudEvents 需要 Event Grid 扩展 3.x。
| Binding | 参数类型 |
|---|---|
| 事件网格触发器 | Newtonsoft.Json.Linq.JObjectstring |
触发器使用情况
在进程中的 C# 类库函数支持以下事件网格触发类型:
Newtonsoft.Json.Linq.JObjectSystem.String
Webhook端点和系统密钥
运行时1.x事件网格触发器的托管Webhook端点使用以下URL模式:
https://{functionappname}.chinacloudsites.cn/admin/extensions/EventGridExtensionConfig?functionName={functionname}&code={systemkey}
要从管理员 API 获取事件网格系统密钥,请使用以下请求中的函数应用主密钥:
https://{functionappname}.chinacloudsites.cn/admin/host/systemkeys/eventgridextensionconfig_extension?code={masterkey}
在本地测试中,事件网格触发端点使用以下URL模式:
http://localhost:7071/admin/extensions/EventGridExtensionConfig?functionName={FUNCTION_NAME}
运行时1.x中的服务总线绑定
运行时1.x暴露了已弃用的Microsoft.ServiceBus.消息命名空间的类型。 Azure 的更新类型。Messaging.ServiceBus 需要 服务总线 扩展 5.x 或更高版本,运行时 4.x。
2026年9月30日,Azure 服务总线 SDK 库 WindowsAzure.ServiceBus、Microsoft.Azure.ServiceBus, 以及 com.microsoft.azure.Servicebus 将被淘汰。 这些库不符合 Azure SDK 指南。 对服务总线消息协议(SBMP)的支持也将终止。 虽然你可以在退役后继续使用旧库,但它们将不再获得Microsoft的官方支持和更新。 有关详细信息,请参阅支持停用公告。
触发器使用情况
队列或主题消息触发器支持以下参数类型:
- BrokeredMessage 通过 BrokeredMessage.GetBody<T>() 方法给你反序列化消息。
-
MessageReceiver 接收并确认来自消息容器的消息。 当
autoComplete设置为false时,需要这种类型。
在 C# 类库中,属性的构造子取队列或主题的名称,并使用订阅。 你也可以指定连接的访问权限。 如果未指定访问权限,则默认为 Manage。
服务总线账户选择
使用ServiceBusAccountAttribute来指定服务总线账户。 构造函数采用包含服务总线连接字符串的应用设置的名称。 在参数、方法或类层面应用属性。 下例展示了类级和方法级属性:
[ServiceBusAccount("ClassLevelServiceBusAppSetting")]
public static class AzureFunctions
{
[ServiceBusAccount("MethodLevelServiceBusAppSetting")]
[FunctionName("ServiceBusQueueTriggerCSharp")]
public static void Run(
[ServiceBusTrigger("myqueue", AccessRights.Manage)]
string myQueueItem, ILogger log)
{
// ...
}
}
以下顺序决定使用哪个服务总线账户:
-
ServiceBusTrigger特性的Connection属性。 - 作为
ServiceBusAccount特性应用到同一参数的ServiceBusTrigger特性。 - 应用到函数的
ServiceBusAccount特性。 - 应用到类的
ServiceBusAccount特性。 -
AzureWebJobsServiceBus应用设置。
消息元数据
以下属性属于 BrokeredMessage 和 MessageReceiver 类。
| Property | 类型 | Description |
|---|---|---|
ContentType |
string |
发送方和接收方用于特定应用逻辑的内容类型标识符。 |
CorrelationId |
string |
相关 ID。 |
DeadLetterSource |
string |
死信消息来源。 |
DeliveryCount |
Int32 |
传递次数。 |
EnqueuedTimeUtc |
DateTime |
排队时间为协调世界时(UTC)。 |
ExpiresAtUtc |
DateTime |
到期时间 (UTC)。 |
Label |
string |
应用程序特定的标签。 |
MessageId |
string |
服务总线可用于标识重复消息的用户定义值(如果启用)。 |
MessageReceiver |
MessageReceiver |
服务总线消息接收器。 可用于放弃、完成或死符处理消息。 |
MessageSession |
MessageSession |
专用于已启用会话的队列和主题的消息接收器。 |
ReplyTo |
string |
回复队列地址。 |
SequenceNumber |
long |
服务总线分配给消息的唯一编号。 |
To |
string |
发送地址。 |
UserProperties |
IDictionary<string, object> |
由发送方设置的属性。 |
输出使用
当发送带有元数据的消息时,请使用 BrokeredMessage 类型。 定义参数为 return 类型属性。 如果函数退出时参数值为空,函数不会生成消息。
对于 function.json 绑定, accessRights 接受 manage 或 listen ,默认为 manage。 如果连接字符串没有Manage权限,则设置为accessRightslisten,以防止运行时尝试管理操作。
运行时如果不存在队列,并且你设置为 accessRightsmanage。
主机设置
关于服务总线绑定设置,请参见运行时1.x host.json 参考。
运行时 1.x 中的 HTTP 和 webhook 绑定
HTTP 触发函数 HTTP 200 OK 默认返回为空体。 后续运行时版本返回 HTTP 204 No Content。
对于 function.json中的HTTP触发器,使用 webHookType 属性配置触发器作为指定提供者的webhook接收器。 该属性是运行时1.x特有的。
运行时1.x不支持访问已认证的客户端信息。
Webhook模式
Webhook模板为webhook有效载荷提供了额外的验证。
webHookType绑定属性显示了webhook提供者并控制支持的有效载荷:
| 类型值 | Description |
|---|---|
genericJson |
常规用途 Webhook 终结点,不包含特定提供程序的逻辑。 该设置限制请求只能使用 HTTP POST,内容类型为 application/json 。 |
github |
该函数响应 GitHub webhooks。 不要将 authLevel 属性与 GitHub webhook 配合使用。 |
slack |
该函数响应 Slack Webhook。 不要对 Slack Webhook 使用 authLevel 属性。 |
当你设置 webHookType时,不要设置属性 methods 。
要响应 GitHub webhooks,创建带有 HTTP 触发器的函数,设置为 webHookTypegithub,并将其 URL 和 API 密钥复制到 GitHub 仓库的添加 webhook 页面。
Slack webhook 会生成一个令牌,所以用该令牌配置一个函数专用密钥。
webhook 接收组件负责 webhook 授权。 该机制因 webhook 类型而异,但每种机制都依赖于一个密钥。 默认情况下,使用函数键命名 default 。 要使用另一个密钥,请配置 webhook 提供者以以下方式发送密钥名:
- 在
clientid查询字符串参数中,例如https://<APP_NAME>.chinacloudsites.cn/api/<FUNCTION_NAME>?clientid=<KEY_NAME>。 - 在请求头里
x-functions-clientid。
关于HTTP绑定设置,请参见 运行时1.x的HTTP部分 host.json 参考。
运行时1.x中的预热触发器
运行时1.x不支持预热触发。
运行时1.x中的SendGrid绑定
通过安装 NuGet 包版本 2.x 将该扩展添加到你的项目。
关于 SendGrid 绑定设置,请参见 运行时 1.x host.json 参考中的 SendGrid 部分。
运行时1.x 中的 Twilio binding
通过安装 NuGet 包版本 1.x 将扩展添加到项目。
对于运行时 1.x,请在 function.json 文件中使用以下绑定配置属性:
| function.json 属性 | Description |
|---|---|
| type | 设置为 twilioSms。 |
| direction | 设置为 out。 |
| name | 在 Twilio 短信的函数代码中使用的变量名。 |
| accountSid | 设置为保存你Twilio账户SidTwilioAccountSid的应用名称。 未设置时,默认应用设置名称为 AzureWebJobsTwilioAccountSid。 |
| authToken | 设置为保存你的Twilio认证令牌的应用设置名称(TwilioAccountAuthToken)。 未设置时,默认应用设置名称为 AzureWebJobsTwilioAuthToken。 |
| to | 设置为短信发送的电话号码。 |
| from | 设置为短信发送时的电话号码。 |
| body | 如果你不需要在函数中动态设置短信,可以用硬编码短信。 |
本文保留的约束信息仅用于理解现有应用。 更新应用时,请遵循运行时迁移指南和当前绑定文档。
常见问题解答
Azure Functions 运行时 1.x 还被支持吗?
No. Azure Functions 运行时 1.x 的支持于2026年9月14日终止。 将受影响的应用迁移到运行时4.x以获得全面支持。
Python v1 或 Node.js v4 编程模型使用运行时 1.x?
No. 语言编程模型版本独立于运行时版本。 Python v1 和 v2 编程模型以及 Node.js v3 和 v4 编程模型运行于 4.x 运行时。