c# - Azure WebJob 丢失连接字符串

标签 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>

我的连接字符串发生了什么?

最佳答案

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

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

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

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

我似乎找不到任何部署槽与网络作业的关系。我了解如何将部分 Web 流量路由到一个部署槽或另一个部署槽。但没有任何关于网络工作的信息。任何人都可以阐明这一点吗?有没有人经历过类似的症状?

关于c# - Azure WebJob 丢失连接字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47203088/

相关文章:

c# - 无法将用户控制注册移动到嵌套的 web.config 中

c# - 需要在插入时快速的关联数组,找到最近的键,并按键顺序迭代

node.js - 如何修复 Linux 中 NodeJs Azure Functions 上的 "Error:/home/site/wwwroot/node_modules/canvas/build/Release/canvas.node: invalid ELF header"?

c# - Entity Framework 硬级联删除

ios - 我无法指向 Xcode 库中的 MSClient

linux - 无法访问安装在 Azure Linux VM 上的 Elasticsearch

ASP.Net URL 路由仅在 `runAllManagedModulesForAllRequests` 为真时有效

asp.net - ASP.NET web.config 中的 301 重定向,包括参数

c# - 在 nopCommerce 插件中使用 CacheManager

c# - 将参数替换为表达式