【问题标题】:Unable to start WebJob - "Azure Storage Emulator is not supported"无法启动 WebJob -“不支持 Azure 存储模拟器”
【发布时间】:2018-03-27 18:36:42
【问题描述】:

在开发 Azure WebJob 时遇到异常

无法验证 Microsoft Azure WebJobs SDK 存储帐户。这 不支持 Microsoft Azure 存储模拟器,请使用 Microsoft Azure 存储帐户托管在 Microsoft Azure 中。'

这似乎相当普遍,解决方法通常是将连接字符串更新为a specific value。但是,就我而言,我已经有了这个特定的连接字符串。

此外,我在同一个解决方案中有两个 WebJobs:我在两种情况下都使用完全相同的连接字符串,而另一个 WebJob 连接没有任何问题。

App.config 我有

<connectionStrings>
    <add name="AzureWebJobsDashboard" connectionString="DefaultEndpointsProtocol=https;AccountName= ... ;AccountKey= ... " />
    <add name="AzureWebJobsStorage" connectionString="DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;BlobEndpoint=http://127.0.0.1:10000/devstoreaccount1;TableEndpoint=http://127.0.0.1:10002/devstoreaccount1;QueueEndpoint=http://127.0.0.1:10001/devstoreaccount1;" />
</connectionStrings>

appSettings下出现相同的连接字符串:

<appSettings>
    <add key="StorageConnectionString" value="DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;BlobEndpoint=http://127.0.0.1:10000/devstoreaccount1;TableEndpoint=http://127.0.0.1:10002/devstoreaccount1;QueueEndpoint=http://127.0.0.1:10001/devstoreaccount1;" />
    <!--<add key="StorageConnectionString" value="UseDevelopmentStorage=true" />-->
</appSettings>

我发现输入UseDevelopmentStorage=true 没有任何区别。

我也尝试在static void Main 中手动声明这些:

var config = new JobHostConfiguration {
                                          JobActivator = new WebJobActivator(kernel)
                                      };
config.DashboardConnectionString = "DefaultEndpointsProtocol=https;AccountName= ... ;AccountKey= ... ";
config.StorageConnectionString = "DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;BlobEndpoint=http://127.0.0.1:10000/devstoreaccount1;TableEndpoint=http://127.0.0.1:10002/devstoreaccount1;QueueEndpoint=http://127.0.0.1:10001/devstoreaccount1;";

当我这样做时,异常会被抛出

config.StorageConnectionString = ...

我正在运行 v5.2 的 Azure 存储模拟器 - 它正在运行。就像我说的,另一个 WebJob 能够毫无问题地连接和运行,并且它们都有相同的 App.config 文件。

我还注释掉了 WebJob 中的所有其他代码,所以它应该做的就是尝试启动并连接到队列。

最后,即使我声明了实时存储的连接字符串,我仍然会遇到同样的异常。

为什么?这些连接细节有什么问题?

【问题讨论】:

  • 您在每个项目中使用的是什么版本的 Microsoft.Azure.WebJobs?我记得在 Microsoft.Azure.WebJobs 包的 v1.x 中,不支持使用 AzureWebJobsDashboard 或 AzureWebJobsStorage 的模拟器(我不记得不支持哪个)。直到 >= v2.x,您才能将模拟器用于这些键。
  • 如果您将其放在答案而不是评论中,那么您将获得全部积分。

标签: c# azure azure-storage azure-queues


【解决方案1】:

检查您是否正在运行 Microsoft.Azure.WebJobs v1.x 或更早版本。我记得在 Microsoft.Azure.WebJobs 包的 v1.x 中,不支持使用 AzureWebJobsDashboard 或 AzureWebJobsStorage 的模拟器(我不记得不支持哪个)。直到 >= v2.x,您才能将模拟器用于这些键。

【讨论】:

  • 太棒了,就是这样。我假设如果我使用 VS 2017 WebJob 项目模板,我会是最新的,但显然不是。它开箱即用地引用了 v1.2。更新到 v2 解决了这个问题。
猜你喜欢
  • 2021-09-12
  • 2018-12-28
  • 2014-09-09
  • 1970-01-01
  • 2023-03-10
  • 1970-01-01
  • 2019-01-15
  • 2014-06-12
相关资源
最近更新 更多