【发布时间】:2018-04-22 12:29:17
【问题描述】:
我在 Azure 中有一个 Web 作业,代码如下:
public static void ProcessQueueMessage([QueueTrigger("ticketprocessorqueue")] string message, TextWriter log)
{
foreach (var c in ConfigurationManager.ConnectionStrings)
{
log.WriteLine(c.ToString());
}
}
在我发布网络作业并触发它之后,我立即得到以下输出:
DefaultEndpointsProtocol=https;AccountName=****;AccountKey=****
DefaultEndpointsProtocol=https;AccountName=****;AccountKey=****
Server=tcp:northtech.database.windows.net,1433;Database=****;User
ID=****;Password=*****;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;
这就是我所期望的。但是,当我在 30 分钟后触发同一个网络作业时,我得到了这个:
""
绝对没有。我的连接字符串怎么了?
这是我的应用程序配置(用于网络作业)以及网络配置(用于父网络应用程序)中的内容的 sn-p:
<connectionStrings>
<add name="AzureWebJobsDashboard" connectionString="DefaultEndpointsProtocol=https;AccountName=****;AccountKey=****" />
<add name="AzureWebJobsStorage" connectionString="DefaultEndpointsProtocol=https;AccountName=****;AccountKey=****" />
<add name="RingCloneDatabase" connectionString="Server=tcp:northtech.database.windows.net,1433;Database=****;User ID=****;Password=****;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;" />
</connectionStrings>
我的连接字符串发生了什么事?
【问题讨论】:
-
尝试以下几件事:1) 尝试 CloudConfigurationManager 2) 尝试重新启动您的应用服务。抱歉,这并没有真正深入到问题的核心,但我已经看到有趣的事情发生了几次,这就是解决方案。不过,我实际上并不了解问题本身。
-
嗯,就是这样。如果我重新启动应用程序服务,它会再次正常工作,但仅限于有限的时间。一段时间后,连接字符串又消失了。
-
好的,那么我的理论就到这里了。我看到奇怪行为的场景是在部署 webjob 然后更改 appsetting/connstr 时——它们不同步(有时)直到重新启动。根据你的描述,情况不同。抱歉,我帮不上忙——这听起来确实很奇怪。
-
您是否尝试在 Webapp 应用设置中添加连接字符串并设置 Webapp 始终开启?
-
感谢 Tom 的建议,但 始终开启 已开启。并且设置在父 Web 应用程序的 Web 配置文件中(以及 Web 作业的应用程序配置文件)
标签: c# azure web-config connection-string app-config