为什么 Azure WebJobs SDK 仪表板连接字符串根本不为空时出现异常?
Why am I getting exception Azure WebJobs SDK Dashboard connection string is missing or empty when it is not empty at all?
我有一个最简单的 webjobs SDK 示例,它应该在将新文件放入输入 blob 容器并将其复制到另一个容器时触发。
下面是代码和 App.config,其中帐户名和密钥被故意编辑为 XXX。
问题是,当我在本地 运行 执行此操作时,出现以下异常。
System.InvalidOperationException 未处理
HResult=-2146233079
Message=Microsoft Azure WebJobs SDK 仪表板连接字符串丢失或为空。
我已经试过了:
- 正在创建 JobHostConfiguration 变量并设置连接
字符串在那里。我得到同样的错误。
- 将此发布到实际的 Azure WebJob,并将连接字符串放入 Azure 门户网站配置中,我在作业日志中得到完全相同的错误。请注意,作业模式设置为连续,并且在 Web 应用程序上设置了 AlwaysOn 选项。
- 将连接信息放在 appSetting 条目中而不是 connectionStrings 中。在博客 post 某处看到它,仍然没有用。
- 在连接字符串中使用 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();
}
}
}
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 个连接字符串。仪表板和存储。
由于异常文本中的唯一区别是“存储”与“仪表板”一词,我并没有真正阅读整篇文章,直到阅读了更多博文才意识到需要 2 个连接。
添加名为 AzureWebJobsStorage 的连接字符串修复了错误。
您可以尝试在配置 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();
}
}
希望这对您有所帮助。
我有一个最简单的 webjobs SDK 示例,它应该在将新文件放入输入 blob 容器并将其复制到另一个容器时触发。
下面是代码和 App.config,其中帐户名和密钥被故意编辑为 XXX。
问题是,当我在本地 运行 执行此操作时,出现以下异常。
System.InvalidOperationException 未处理 HResult=-2146233079 Message=Microsoft Azure WebJobs SDK 仪表板连接字符串丢失或为空。
我已经试过了:
- 正在创建 JobHostConfiguration 变量并设置连接 字符串在那里。我得到同样的错误。
- 将此发布到实际的 Azure WebJob,并将连接字符串放入 Azure 门户网站配置中,我在作业日志中得到完全相同的错误。请注意,作业模式设置为连续,并且在 Web 应用程序上设置了 AlwaysOn 选项。
- 将连接信息放在 appSetting 条目中而不是 connectionStrings 中。在博客 post 某处看到它,仍然没有用。
- 在连接字符串中使用 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();
}
}
}
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 个连接字符串。仪表板和存储。
由于异常文本中的唯一区别是“存储”与“仪表板”一词,我并没有真正阅读整篇文章,直到阅读了更多博文才意识到需要 2 个连接。
添加名为 AzureWebJobsStorage 的连接字符串修复了错误。
您可以尝试在配置 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();
}
}
希望这对您有所帮助。