3

我有一个具有持久功能(以及一些非持久功能)的功能应用程序,我收到一个 InvalidOperationException ,它说:Unable to find an Azure Storage connection string to use for this binding.

这是堆栈跟踪:

System.InvalidOperationException:
  at Microsoft.Azure.WebJobs.Extensions.DurableTask.DurableTaskExtension.GetOrchestrationServiceSettings (Microsoft.Azure.WebJobs.Extensions.DurableTask, Version=1.5.0.0, Culture=neutral, PublicKeyToken=null)
  at Microsoft.Azure.WebJobs.Extensions.DurableTask.DurableTaskExtension.Microsoft.Azure.WebJobs.Host.Config.IExtensionConfigProvider.Initialize (Microsoft.Azure.WebJobs.Extensions.DurableTask, Version=1.5.0.0, Culture=neutral, PublicKeyToken=null)
  at Microsoft.Azure.WebJobs.Host.Executors.JobHostConfigurationExtensions.InvokeExtensionConfigProviders (Microsoft.Azure.WebJobs.Host, Version=2.3.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35)
  at Microsoft.Azure.WebJobs.Host.Executors.JobHostConfigurationExtensions.CreateStaticServices (Microsoft.Azure.WebJobs.Host, Version=2.3.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35)
  at Microsoft.Azure.WebJobs.JobHost.InitializeServices (Microsoft.Azure.WebJobs.Host, Version=2.3.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35)
  at Microsoft.Azure.WebJobs.Script.Utility.CreateMetadataProvider (Microsoft.Azure.WebJobs.Script, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullMicrosoft.Azure.WebJobs.Script, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null: C:\projects\azure-webjobs-sdk-script\src\WebJobs.Script\Utility.csMicrosoft.Azure.WebJobs.Script, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null: 362)
  at Microsoft.Azure.WebJobs.Script.ScriptHost.LoadBindingExtensions (Microsoft.Azure.WebJobs.Script, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullMicrosoft.Azure.WebJobs.Script, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null: C:\projects\azure-webjobs-sdk-script\src\WebJobs.Script\Host\ScriptHost.csMicrosoft.Azure.WebJobs.Script, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null: 966)
  at Microsoft.Azure.WebJobs.Script.ScriptHost.Initialize (Microsoft.Azure.WebJobs.Script, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullMicrosoft.Azure.WebJobs.Script, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null: C:\projects\azure-webjobs-sdk-script\src\WebJobs.Script\Host\ScriptHost.csMicrosoft.Azure.WebJobs.Script, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null: 299)
  at Microsoft.Azure.WebJobs.Script.ScriptHostManager.RunAndBlock (Microsoft.Azure.WebJobs.Script, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullMicrosoft.Azure.WebJobs.Script, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null: C:\projects\azure-webjobs-sdk-script\src\WebJobs.Script\Host\ScriptHostManager.csMicrosoft.Azure.WebJobs.Script, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null: 177)

抱怨缺少连接字符串的似乎是持久功能。但是,我的 AzureWebJobsDashboard 应用程序设置中确实填充了连接字符串,所以我不确定它为什么会失败。

4

3 回答 3

2

(这个问题显示没有答案,所以我在这里采纳了玲的建议,并把它变成一个正确的答案)

除了AzureWebJobsDashboard应用设置,您还需要在应用设置中指定您的 Azure 存储连接字符串AzureWebJobsStorage。包括 Durable Functions 在内的各种 Azure Functions 功能都需要后一种应用设置。两个应用程序设置具有相同的连接字符串是可以的。

于 2019-05-08T22:22:19.127 回答
1

此错误是由不正确的 url 引起的。如果模拟器停止,您会返回: “无法建立连接,因为目标机器主动拒绝它” 请参阅:在 C# 中创建您的第一个持久函数

决议:

1 - 确保 Azure 存储模拟器正在运行或重新启动它

C:\Program Files (x86)\Microsoft SDKs\Azure\Storage Emulator>AzureStorageEmulator.exe stop
Windows Azure Storage Emulator 5.10.0.0 command line tool
The storage emulator was successfully stopped.

C:\Program Files (x86)\Microsoft SDKs\Azure\Storage Emulator>AzureStorageEmulator.exe start
Windows Azure Storage Emulator 5.10.0.0 command line tool
The storage emulator was successfully started.

2:确保网址正确。输出包含几个url,请确保您使用statusQueryGetUri的一个,(这是最可能的原因)

{"id":"57756e5133f047ed9213b3956c0268be",
"statusQueryGetUri":"http://localhost:7071/runtime/webhooks/durabletask/instances/57756e5133f047ed9213b3956c0268be?taskHub=TestHubName&connection=Storage&code=Ruk2CuiKU7yk9GM1qjalxynMwk2Bx2/KOpz78lxmPa4cNb2AtDZppw==",
"sendEventPostUri":"http://localhost:7071/runtime/webhooks/durabletask/instances/57756e5133f047ed9213b3956c0268be/raiseEvent/{eventName}?taskHub=TestHubName&connection=Storage&code=Ruk2CuiKU7yk9GM1qjalxynMwk2Bx2/KOpz78lxmPa4cNb2AtDZppw==",
"terminatePostUri":"http://localhost:7071/runtime/webhooks/durabletask/instances/57756e5133f047ed9213b3956c0268be/terminate?reason={text}&taskHub=TestHubName&connection=Storage&code=Ruk2CuiKU7yk9GM1qjalxynMwk2Bx2/KOpz78lxmPa4cNb2AtDZppw==",
"purgeHistoryDeleteUri":"http://localhost:7071/runtime/webhooks/durabletask/instances/57756e5133f047ed9213b3956c0268be?taskHub=TestHubName&connection=Storage&code=Ruk2CuiKU7yk9GM1qjalxynMwk2Bx2/KOpz78lxmPa4cNb2AtDZppw=="}

工作配置文件:

{
    "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "UseDevelopmentStorage=true",
    "FUNCTIONS_WORKER_RUNTIME": "dotnet"
  }
}
于 2020-07-14T15:30:18.320 回答
1

AzureWebJobsStorage正如其他答案所说,由于缺少连接字符串,我得到了异常。但是,连接字符串存在于appsettings.Development.json文件中......

为了让 Durable Function 项目在本地启动,连接字符串需要在local.settings.json文件中。

于 2021-06-15T10:50:44.373 回答