【问题标题】:Durable Function exception: "Unable to find an Azure Storage connection string to use for this binding."持久函数异常:“找不到用于此绑定的 Azure 存储连接字符串。”
【发布时间】:2018-10-15 19:13:46
【问题描述】:

我有一个具有持久功能(以及一些非持久功能)的函数应用程序,我收到一个 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 应用设置中确实填充了连接字符串,所以我不确定它为什么会失败。

【问题讨论】:

  • 您需要确保为“AzureWebJobsStorage”应用设置提供了存储连接字符串。
  • 谢谢,@LingToh,我把 Dashboard 设置误认为是 Storage one。

标签: azure azure-functions azure-durable-functions


【解决方案1】:

(这个问题显示没有答案,所以我把玲的建议作为正确的答案在这里)

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

【讨论】:

    【解决方案2】:

    此错误是由不正确的 url 引起的。 如果模拟器停止,您将返回: “由于目标机器主动拒绝,无法建立连接” 参考:Create your first durable function in 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"
      }
    }
    

    【讨论】:

    • 这对我有用。必须将 "AzureWebJobsStorage": "UseDevelopmentStorage=true", 添加到我的 local.settings.json 文件中。这将启动模拟器。该设置起初看起来是空的。
    【解决方案3】:

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

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

    【讨论】:

    • 是的,这里也一样:值存在于另一个配置文件中,但我没有在这个项目上使用 local.settings.config;添加它,它再次工作,谢谢!
    猜你喜欢
    • 2021-10-13
    • 1970-01-01
    • 2021-05-31
    • 2021-03-21
    • 1970-01-01
    • 2019-10-16
    • 2019-12-18
    • 2015-12-02
    • 2017-10-15
    相关资源
    最近更新 更多