Azure WebJobs SDK 和模拟器 - 触发器不工作
Azure WebJobs SDK and Emulator - Triggers not working
我正在尝试将 azure SDK 从 v1 更新到 v3,并将其连接到 Azure 存储模拟器进行测试;使用控制台应用程序和 .NET Framework。
它似乎不喜欢以前工作的任何触发器,错误中的 'SomeFunction' 是一个带有超时的简单 QueueTrigger。
异常:Microsoft.Azure.WebJobs.Host.Indexers.FunctionIndexingException:'Error indexing method '*.SomeFunction'
内部异常:InvalidOperationException:未配置存储帐户'Storage'。
[Timeout("00:30:00")]
public static async Task SomeFunction([QueueTrigger("queue")] CloudQueueMessage message, CancellationToken cancellationToken)
{
// do stuff
}
app.config:
<connectionStrings>
<add name="AzureWebJobsDashboard" connectionString="AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;DefaultEndpointsProtocol=http;BlobEndpoint=http://127.0.0.1:10000/devstoreaccount1;QueueEndpoint=http://127.0.0.1:10001/devstoreaccount1;TableEndpoint=http://127.0.0.1:10002/devstoreaccount1;" />
<add name="AzureWebJobsStorage" connectionString="AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;DefaultEndpointsProtocol=http;BlobEndpoint=http://127.0.0.1:10000/devstoreaccount1;QueueEndpoint=http://127.0.0.1:10001/devstoreaccount1;TableEndpoint=http://127.0.0.1:10002/devstoreaccount1;" />
</connectionStrings>
<appSettings>
<add key="StorageConnectionString" value="UseDevelopmentStorage=true" />
<add key="AzureQueueName" value="queue" />
</appSettings>
1。使用 appSettings.json
Microsoft.Azure.WebJobs 的版本 3 不再使用 app.config
文件进行配置,而是使用 appSettings.json
文件进行配置。将它放在应用程序的根目录中,并确保 appSettings.json 的“复制到输出目录”属性文件设置为 Copy if newer 或 Copy always,或使用 直接将其添加到您的 .csproj
文件始终 或 PreserveNewest:
<Project ...>
...
<ItemGroup>
<None Include="appSettings.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup>
...
</Project>
2。 appSettings.json内容
您的 appSettings.json
文件应包含存储连接字符串:
开发中
{
"ConnectionStrings": {
"AzureWebJobsStorage": "UseDevelopmentStorage=true"
}
}
生产中
{
"ConnectionStrings": {
"AzureWebJobsStorage": "DefaultEndpointsProtocol=https;AccountName=mystorage;AccountKey=key;..."
}
}
有关在版本 3 中进行配置的更多信息,请参阅 this .NET Core 2.1 sample host application。尽管它可能与您使用的 .NET Framework 有所不同。
我正在尝试将 azure SDK 从 v1 更新到 v3,并将其连接到 Azure 存储模拟器进行测试;使用控制台应用程序和 .NET Framework。
它似乎不喜欢以前工作的任何触发器,错误中的 'SomeFunction' 是一个带有超时的简单 QueueTrigger。
异常:Microsoft.Azure.WebJobs.Host.Indexers.FunctionIndexingException:'Error indexing method '*.SomeFunction'
内部异常:InvalidOperationException:未配置存储帐户'Storage'。
[Timeout("00:30:00")]
public static async Task SomeFunction([QueueTrigger("queue")] CloudQueueMessage message, CancellationToken cancellationToken)
{
// do stuff
}
app.config:
<connectionStrings>
<add name="AzureWebJobsDashboard" connectionString="AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;DefaultEndpointsProtocol=http;BlobEndpoint=http://127.0.0.1:10000/devstoreaccount1;QueueEndpoint=http://127.0.0.1:10001/devstoreaccount1;TableEndpoint=http://127.0.0.1:10002/devstoreaccount1;" />
<add name="AzureWebJobsStorage" connectionString="AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;DefaultEndpointsProtocol=http;BlobEndpoint=http://127.0.0.1:10000/devstoreaccount1;QueueEndpoint=http://127.0.0.1:10001/devstoreaccount1;TableEndpoint=http://127.0.0.1:10002/devstoreaccount1;" />
</connectionStrings>
<appSettings>
<add key="StorageConnectionString" value="UseDevelopmentStorage=true" />
<add key="AzureQueueName" value="queue" />
</appSettings>
1。使用 appSettings.json
Microsoft.Azure.WebJobs 的版本 3 不再使用 app.config
文件进行配置,而是使用 appSettings.json
文件进行配置。将它放在应用程序的根目录中,并确保 appSettings.json 的“复制到输出目录”属性文件设置为 Copy if newer 或 Copy always,或使用 直接将其添加到您的 .csproj
文件始终 或 PreserveNewest:
<Project ...>
...
<ItemGroup>
<None Include="appSettings.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup>
...
</Project>
2。 appSettings.json内容
您的 appSettings.json
文件应包含存储连接字符串:
开发中
{
"ConnectionStrings": {
"AzureWebJobsStorage": "UseDevelopmentStorage=true"
}
}
生产中
{
"ConnectionStrings": {
"AzureWebJobsStorage": "DefaultEndpointsProtocol=https;AccountName=mystorage;AccountKey=key;..."
}
}
有关在版本 3 中进行配置的更多信息,请参阅 this .NET Core 2.1 sample host application。尽管它可能与您使用的 .NET Framework 有所不同。