为啥我收到异常 Azure WebJobs SDK Dashboard connection string is missing or empty 当它根本不为空时?

Posted

技术标签:

【中文标题】为啥我收到异常 Azure WebJobs SDK Dashboard connection string is missing or empty 当它根本不为空时?【英文标题】:Why am I getting exception Azure WebJobs SDK Dashboard connection string is missing or empty when it is not empty at all?为什么我收到异常 Azure WebJobs SDK Dashboard connection string is missing or empty 当它根本不为空时? 【发布时间】:2017-01-21 11:49:22 【问题描述】:

我有一个最简单的 webjobs SDK 示例,它应该在将新文件放入输入 blob 容器并将其复制到另一个容器时触发。

以下是代码和 App.config,其中帐户名称和密钥被故意编辑为 XXX。

问题是当我在本地运行它时,我得到了下面的异常。

System.InvalidOperationException 未处理 H结果=-2146233079 Message=Microsoft Azure WebJobs SDK 仪表板连接字符串丢失或为空。

我已经试过了:

    创建 JobHostConfiguration 变量并设置连接 串在那里。我得到了同样的错误。 将此发布到实际的 Azure WebJob,并将连接字符串放入 Azure 门户网站配置中,我在作业日志中得到完全相同的错误。请注意,作业模式设置为连续,并且在 web 应用上设置了 AlwaysOn 选项。 将连接信息放在 appSetting 条目中,而不是在 connectionStrings 中。在某处的博客文章中看到它,仍然没有工作。 在连接字符串中使用 UseDevelopmentStorage,但它抱怨 Azure Storage Emulator 不受支持。

我今天刚刚安装了最新版本的 SDK(我相信是 2.9?)。这是一台新机器,我只是在学习 Azure 和 WebJobs,所以我以前在这台机器上工作过很多复杂的场景。

在这一点上,我不知所措。非常感谢任何帮助,谢谢。

代码:

using Microsoft.Azure.WebJobs;
using System.IO;

namespace TestWebJob1

    class Program
    
        static void Main(string[] args)
        
            JobHost host = new JobHost();
            host.RunAndBlock();
        

        public static void CopyCopy([BlobTrigger("testinput/name")] TextReader input, [Blob("testoutput/name")] out string output)
        
            output = input.ReadToEnd();
        
    

App.config

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
    </startup>
  <connectionStrings>
    <add name="AzureWebJobsDashboard" connectionString="DefaultEndpointsProtocol=https;AccountName=XXXX;AccountKey=XXX" />
  </connectionStrings>
</configuration>

【问题讨论】:

【参考方案1】:

非常愚蠢。原来需要 2 个连接字符串。仪表板和存储。

由于异常文本中的唯一区别是 Storage vs Dashboard 这个词,我并没有真正阅读整个文本,直到阅读了几篇博文后才意识到需要 2 个连接。

添加名称为 AzureWebJobsStorage 的连接字符串修复了错误。

【讨论】:

【参考方案2】:

您可以在配置 JobHostConfiguration 对象时尝试显式设置连接字符串。

class Program

    static void Main()
    
        //Configure JobHost
        var storageConnectionString = "your_connection_string"; //You can load this from .config file obviously
        var config = new JobHostConfiguration(storageConnectionString);

        //Pass configuration to JobJost
        var host = new JobHost(config);
        // The following code ensures that the WebJob will be running continuously
        host.RunAndBlock();
    

希望这会有所帮助。

【讨论】:

以上是关于为啥我收到异常 Azure WebJobs SDK Dashboard connection string is missing or empty 当它根本不为空时?的主要内容,如果未能解决你的问题,请参考以下文章

如何在本地测试 Azure Webjobs SDK 项目?

在 Azure Webjobs SDK 中设置 nextVisibleTime

异常 Microsoft.Azure.WebJobs.Script.Workers.Rpc.RpcException

为啥我需要在 Azure 管理门户中而不是在我的 WebJob 的 App.config 中为 WebJobs 配置连接字符串?

什么是 Azure WebJobs SDK 3.0 版本的 host.Call()

Azure WebJobs SDK - 在啥情况下需要创建 JobHost 对象?