为什么我会收到异常Azure WebJobs SDK Dashboard连接字符串缺失或空时完全不为空?

时间:2016-09-13 19:16:18

标签: azure azure-webjobs azure-webjobssdk

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

下面是代码和App.config,其中有意识地将帐户名称和密钥修改为XXX。

问题是当我在本地运行时,我得到以下例外。

System.InvalidOperationException未处理   的HResult = -2146233079   消息= Microsoft Azure WebJobs SDK仪表板连接字符串缺失或为空。

我已经尝试过了:

  1. 创建JobHostConfiguration变量并设置连接 在那里。我得到了同样的错误。
  2. 将其发布到实际的Azure WebJob,并将连接字符串放在Azure门户网站配置中,我在作业日志中得到完全相同的错误。请注意,作业模式设置为“连续”,并且在Web应用程序上设置了“AlwaysOn”选项。
  3. 将连接信息放在appSetting条目中,而不是在connectionStrings中。在某处的博客文章中看到它,仍然无法正常工作。
  4. 在连接字符串中使用UseDevelopmentStorage,但它抱怨不支持Azure存储模拟器。
  5. 我今天刚安装了最新版本的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>
    

2 个答案:

答案 0 :(得分:5)

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

由于异常文本中唯一的区别是“存储与仪表板”这个词,我并没有真正阅读整篇文章,直到阅读了几篇博文后才意识到需要2个连接。

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

答案 1 :(得分:1)

配置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();
    }
}

希望这会有所帮助。