我需要更好地了解适用于Azure应用服务的插槽应用程序设置。适用时以及如何正确使用它们。
我有2个应用服务设置,每个运行2个插槽,如下所示。
有插槽的网站1 - 暂存
第2站有插槽 - 制作 - 制作
因此,对于每个站点,我希望能够在“应用程序设置”刀片中为构建槽添加无效的连接字符串,以便无法访问该站点,并且只会在azuerwebsites上为您提供基本错误页面该广告位的.net网址。
在每个我的生产槽中,我想要放置正确的连接字符串,这样一旦交换它们就可以工作。
我无法让它可靠地工作,我交换时设置不适用。我应该将生产槽上的连接字符串标记为插槽设置吗?构建插槽上的原始插槽应该是插槽设置吗?我是否需要安装某种我不知道的nuget包。
请帮忙
答案 0 :(得分:8)
如果我理解你的问题,你需要将它们全部标记为插槽设置。
标记为插槽设置的应用程序设置和连接字符串将在交换完成时保留在插槽中。任何未标记为插槽设置的设置/连接字符串都将与应用程序交换。
答案 1 :(得分:4)
我的问题的答案在本文件中找到。 (如果Azure团队中的任何人出现,应该从部署插槽的配置部分here真正链接到这一点)
Windows Azure Web Sites: How Application Strings and Connection Strings Work
简而言之,除非您使用的是.NET 4.5框架,否则不应使用ConfigurationManager从“应用程序设置”刀片中获取设置。
如果您不使用.NET 4.5框架,则应使用Environment.GetEnvironmentVariable
代替。
当我将我现有的环境转换为App Services时,这让我感到沮丧。我本来希望在某处发出重大警告,告诉我确保这一点。
编辑:所以这不是全部故事;另一部分是" sticky"并且"不粘"文档中的设置。我不断发现这样的事实,即设置实际上没有放入你的web.config文件,而是存放在你的应用程序可访问的内存属性包中。我无法找到任何关于如何看到这个神秘包里的东西的参考,但是一旦你知道它就会明白这个答案。
在交换期间,暂存插槽上的任何设置实际上都会复制到生产槽的设置中,即它实际上会在生产槽中更改它"应用程序设置"刀。而且,您的插槽中的应用程序设置刀片中的内容属于内存属性包中的内容。