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

Posted

技术标签:

【中文标题】为啥我需要在 Azure 管理门户中而不是在我的 WebJob 的 App.config 中为 WebJobs 配置连接字符串?【英文标题】:Why do I need to configure connection strings for WebJobs in Azure Management Portal rather than in the App.config of my WebJob?为什么我需要在 Azure 管理门户中而不是在我的 WebJob 的 App.config 中为 WebJobs 配置连接字符串? 【发布时间】:2015-03-20 13:39:51 【问题描述】:

我通过右键单击我的 WebApp 项目并添加一个新的 Azure Web 项目来创建一个计划的 Azure WebJob。我在 WebJob 项目的 App.config 中设置了 AzureWebJobsDashboard 和 AzureWebJobsStorage 连接字符串。我暂时将默认代码留在 .cs 文件中。接下来,我从 Visual Studio(顺便说一下 2013 Update 4)发布到 Azure 网站。它创建了 WebJob,我可以从 Azure 管理站点或 Visual Studio 运行它,它是成功的。我可以看到我期望的输出日志。但是,Azure WebJob 详细信息页面显示以下警告/错误:

确保您正在设置一个名为的连接字符串 AzureWebJobsDashboard 在您的 Microsoft Azure 网站配置中由 使用以下格式 DefaultEndpointsProtocol=https;AccountName=NAME;AccountKey=KEY 指向 Microsoft Azure 存储帐户,其中 Microsoft 存储 Azure WebJobs 运行时日志。

没有为 Microsoft Azure WebJobs 正确设置配置 仪表板。在您的 Microsoft Azure 网站配置中,您必须设置 使用以下内容命名为 AzureWebJobsDashboard 的连接字符串 格式 DefaultEndpointsProtocol=https;AccountName=NAME;AccountKey=KEY 指向 Microsoft Azure 存储帐户,其中 Microsoft 存储 Azure WebJobs 运行时日志。

它还提供了一个指向 http://azure.microsoft.com/blog/2013/07/17/windows-azure-web-sites-how-application-strings-and-connection-strings-work/ 的链接,它没有解释我收到错误消息的原因。

现在,为了消除此警告/错误,我在 Azure 管理站点的配置页面中添加相同的 AzureWebJobsDashboard 连接字符串。

所以,我想弄清楚我是否做错了什么,或者这只是 Microsoft 尚未修复的 WebJobs 中的一个问题。我真的希望能够在 App.config 中包含它,而不是必须记住在我们为不同环境生成的每个网站中进行设置。

非常感谢您的时间和帮助。

【问题讨论】:

有关如何正确设置这些值的更多信息,请参阅***.com/questions/22767176/error-in-azure-webjobs/… 【参考方案1】:

仪表板无权访问您的网络作业的app.config 文件,即使可以访问,您也可能有多个网络作业,因此它不知道要选择哪个连接字符串。这就是您需要在门户中设置连接字符串的原因。

但是,如果您在门户中设置它们,则不必为 web 作业在 app.config 中设置它们。 WebJobs SDK 知道如何从那里读取它们。

【讨论】:

"但是,如果您在门户中设置它们,则不必在 web 作业的 app.config 中进行设置。" - 感谢您提供此信息,但您能否指出我们可以在门户中的何处找到此设置?在与作业相关联的网络应用程序下?我没有看到这样的选项? 感谢 Victor,但我终于想通了。虽然非常令人沮丧。对于其他人:旧门户:您的网站 -> 配置选项卡 -> 在“连接字符串”下,输入两个新值:a) 下拉类型 CUSTOM,对于 NAME,不要输入您的存储帐户的名称!而名称是:“AzureWebJobsDashboard”或另一个(输入两个条目):“AzureWebJobsStorage”。然后对于值,输入完整的存储帐户字符串:'DefaultEndpointsProtocol=https;AccountName=YourNAME;AccountKey=YourKEY'。新门户:您的 Web 应用程序 -> 所有设置 -> 应用程序设置 -> 连接字符串,然后是 dido。 只是想知道 - 这不能在网络应用配置中完成吗? Azure 发展得如此之快,所有的步骤在谷歌上出现时都已经过时了。我还想知道为什么我的连接字符串似乎从应用程序配置中被忽略,以及为什么似乎没有任何地方可以从当前的 azure 门户(2015 年 12 月)设置它们。跛脚酱。 @VictorHurdugaci - 感谢您的回答和阅读!该线程正在谈论的相同的两个连接字符串。 AzureWebJobsDashboard 和 AzureWebJobsStorage。请让我们知道.... 对或错 -> Webjobs 完全忽略 app.config 连接字符串?对或错 -> 当您在门户中设置连接字符串时,它适用于所有网络作业和网站?谢谢 :)【参考方案2】:

我必须手动添加授权标头:

为了在“基本”之后获取值,我使用了以下代码:

var byteArray = Encoding.ASCII.GetBytes("<user>:<password>");
var base64 = Convert.ToBase64String(byteArray);

Ithink 是一个 Azure 调度程序 UI 错误

【讨论】:

以上是关于为啥我需要在 Azure 管理门户中而不是在我的 WebJob 的 App.config 中为 WebJobs 配置连接字符串?的主要内容,如果未能解决你的问题,请参考以下文章

为啥 iOS 应用评论只出现在 iTunes 中而不出现在 App Store 中

为啥只保存在源中而不是卡片中的条带卡?

仅在 JWT 令牌中而不是在 OAuth2 令牌中添加附加信息

为啥不能配置 Azure 诊断以通过新的 Azure 门户使用 Azure 表存储?

DLL 在子文件夹中而不是在应用程序文件夹中

在模拟器中而不是在设备中更新位置