Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Azure WebJob丢失连接字符串_C#_Azure_Web Config_Connection String_App Config - Fatal编程技术网

C# Azure WebJob丢失连接字符串

C# Azure WebJob丢失连接字符串,c#,azure,web-config,connection-string,app-config,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.To

我在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作业时,我得到以下结果:

""
绝对没有。我的连接字符串怎么了

这是my app config(用于web作业)和web config(用于父web应用)中的内容的一个片段:



我的连接字符串怎么了?

经过大量挖掘,我发现(部分)是什么导致连接字符串在我的web作业中“消失”的。我之所以说“部分”,是因为我找到了修复它的方法,但我为“修复”它而执行的操作没有任何意义。如果有人能对此有所了解,请随意插话

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

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

  • 在我的父应用程序服务和我的附加部署槽中,连接字符串和应用程序设置完全相同
  • 在流量路由上,我有100%的流量流向我的主(父)应用程序服务,0%流向临时部署槽(对于所有临时测试,我们直接点击临时url)
  • 这似乎表明我的父应用程序服务中的web作业和部署槽中的web作业之间的连接字符串和/或应用程序设置存在某种冲突
  • 如果是这种情况,当父应用程序中有一个web作业“实例”且部署槽中有相同的实例时,azure如何确定要使用哪个web作业“实例”
  • 即使我的父应用程序服务和我的部署槽之间存在冲突,为什么它只是空白?它不会从那个“实例”中提取连接字符串吗
  • 最后,当部署槽中的web作业位于父应用程序中时,azure如何处理该作业?我的意思是,两个作业使用相同的队列名称。当消息添加到队列中时,它们是否都会被触发

  • 我似乎找不到部署槽与web作业的关系。我了解了如何将一些web流量路由到一个或另一个部署槽。但是关于网络工作却什么都没有。有人能解释一下吗?以前有人经历过类似的症状吗?

    经过大量挖掘,我发现(部分)是什么导致连接字符串在我的web工作中“消失”的。我之所以说“部分”,是因为我找到了修复它的方法,但我为“修复”它而执行的操作没有任何意义。如果有人能对此有所了解,请随意插话

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

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

  • 在我的父应用程序服务和我的附加部署槽中,连接字符串和应用程序设置完全相同
  • 在流量路由上,我有100%的流量流向我的主(父)应用程序服务,0%流向临时部署槽(对于所有临时测试,我们直接点击临时url)
  • 这似乎表明我的父应用程序服务中的web作业和部署槽中的web作业之间的连接字符串和/或应用程序设置存在某种冲突
  • 如果是这种情况,当父应用程序中有一个web作业“实例”且部署槽中有相同的实例时,azure如何确定要使用哪个web作业“实例”
  • 即使我的父应用程序服务和我的部署槽之间存在冲突,为什么它只是空白?它不会从那个“实例”中提取连接字符串吗
  • 最后,当部署槽中的web作业位于父应用程序中时,azure如何处理该作业?我的意思是,两个作业使用相同的队列名称。当消息添加到队列中时,它们是否都会被触发

  • 我似乎找不到部署槽与web作业的关系。我了解了如何将一些web流量路由到一个或另一个部署槽。但是关于网络工作却什么都没有。有人能解释一下吗?以前有人经历过类似的症状吗?

    有几件事需要尝试:1)尝试CloudConfigurationManager 2)尝试重新启动应用程序服务。很抱歉,这并没有真正深入到问题的核心,但我已经看到有趣的事情发生了几次,这是解决问题的办法。不过,我并不真正理解问题本身。嗯,就是这样。如果我重新启动应用程序服务,它会再次正常工作,但只能在有限的时间内正常工作。过了一段时间,连接字符串又消失了。好吧,我的理论是这样的。我看到的这种奇怪的行为是在部署一个webjob,然后更改appsetting/connstr时,它们(有时)会失去同步,直到重新启动。和你描述的不同。抱歉,我帮不上忙-这听起来确实很奇怪。您是否尝试在Webapp应用设置中添加连接字符串并将Webapp始终打开?谢谢您的建议Tom,但始终打开已打开。设置位于父web应用程序的web配置文件(以及web作业的应用程序配置文件)中。有几件事需要尝试:1)尝试CloudConfigurationMana
      <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>