Azure WebJob丢失连接字符串

时间:2017-11-09 13:27:12

标签: c# azure web-config connection-string app-config

我在Azure中有一个Web作业,代码如下:

    public static void ProcessQueueMessage([QueueTrigger("ticketprocessorqueue")] string message, TextWriter log)
    {
        foreach (var c in ConfigurationManager.ConnectionStrings)
        {
            log.WriteLine(c.ToString());
        }
    }

在我发布Web作业并触发它之后,我立即获得以下输出:

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分钟后触发相同的Web作业时,我得到了这个:

""

绝对没有。我的连接字符串发生了什么?

这是我的应用配置(针对网络作业)以及网络配置(针对父网络应用)的内容片段:

  <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 个答案:

答案 0 :(得分:0)

经过多次挖掘,我发现(部分)导致连接字符串在我的网络作业中“消失”的原因。我说“部分”是因为我找到了修复它的方法,但我执行的“修复”操作没有任何意义。如果有人能够对它有所了解,请随意加入。

它归结为:我最近在我的Azure应用服务中创建了一个额外的“部署插槽”。我们使用这个额外的部署插槽在最终部署(临时环境)之前测试应用程序。当我添加部署插槽时似乎开始出现问题。当我完全删除该部署插槽时,问题就消失了。就是这样了。这就是我所知道的。

但这给我带来了更多问题。以下是一些需要考虑的想法和问题:

  1. 连接字符串和应用设置在我的父应用服务和我的其他部署插槽中完全相同。
  2. 在流量路由方面,我有100%的流量都转到我的主(父)应用服务,0%转到暂存部署插槽(我们直接点击暂存网址进行所有暂存测试)。
  3. 这似乎表明我的父应用服务中的Web作业与部署插槽中的Web作业之间的连接字符串和/或应用程序设置存在某种冲突。
  4. 如果是这种情况,azure如何确定在父应用程序中有一个Web作业“实例”时使用哪个“实例”,以及部署插槽中有哪个“实例”?
  5. 即使我的父应用服务和我的部署插槽之间存在冲突,为什么它只是空白?它不会从“实例”中获取连接字符串。
  6. 最后,当父应用程序中的相同作业时,azure如何处理部署槽中的Web作业?我的意思是,两个作业都使用相同的队列名称。将消息添加到队列时,它们都会被解雇吗?
  7. 我似乎无法找到任何部署插槽与Web作业的关系。我看到了如何将一些Web流量路由到一个部署插槽或另一个部署插槽。但没有关于网络工作。任何人都可以对此有所了解吗?有没有人经历过这样的症状?