当根本不为空时,为什么会出现异常Azure WebJobs SDK仪表板连接字符串丢失或为空的异常?

GR7*_*GR7 5 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 Portal网站配置中,我在作业日志中得到了完全相同的错误。请注意,作业模式设置为“连续”,并且在Web应用程序上设置了“始终打开”选项。
  3. 将连接信息放在appSetting条目中,而不是在connectionStrings中。在某处的博客文章上看到了它,但仍然没有用。
  4. 在连接字符串中使用UseDevelopmentStorage,但它抱怨不支持Azure存储模拟器。

我今天刚刚安装了最新版本的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();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

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>
Run Code Online (Sandbox Code Playgroud)

GR7*_*GR7 5

很傻 事实证明,需要2个连接字符串。仪表板和存储。

由于例外文本中唯一的区别是“存储与仪表板”一词,所以我并没有真正阅读全文,直到多读了几篇博客文章才意识到需要两个连接。

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