15

我需要更好地了解 Azure 应用服务的插槽应用程序设置。它们何时应用以及如何正确使用它们。

我有 2 个应用服务设置每个运行 2 个插槽,如下所示。

  1. 带插槽的站点 1 - 构建阶段
  2. 带插槽的站点 1 - 登台

  3. 带插槽的站点 2 - 构建生产

  4. 带插槽的站点 2 - 生产

因此,对于每个站点,我希望能够在应用程序设置刀片中为构建插槽放置一个无效的连接字符串,以便无法访问该站点,并且基本上只会在 azuerwebsites.net url 上为您提供一个错误页面对于那个插槽。

然后,在我的每个生产槽中,我想放置正确的连接字符串,以便一旦交换它们就可以工作。

我无法让它可靠地工作,交换时设置不适用。我应该将生产槽上的连接字符串标记为槽设置吗?构建槽上的原始设置应该是槽设置吗?我是否需要安装某种我不知道的 nuget 包。

请帮忙

4

2 回答 2

13

如果我正确理解了您的问题,您需要将它们全部标记为插槽设置。

交换完成后,标记为插槽设置的应用程序设置和连接字符串将保留在插槽中。任何未标记为插槽设置的设置/连接字符串都将与应用程序交换。

于 2016-06-15T15:51:32.243 回答
5

我的问题的答案可以在这个文档中找到。(如果 Azure 团队中的任何人遇到过,应该从此处的“部署槽配置”部分真正链接到该部分)

Windows Azure 网站:应用程序字符串和连接字符串如何工作

简而言之,除非您使用的是 .NET 4.5 框架,否则不应使用 ConfigurationManager 从应用程序设置刀片获取设置。

如果您不使用 .NET 4.5 框架,则应该使用Environment.GetEnvironmentVariable

当我将我现有的环境转换为应用服务时,这让我很不爽。我会喜欢在某个地方发出一个大警告来告诉我要确保这一点。

编辑:所以这不是全部;

另一部分是文档中“粘性”和“不粘性”设置的含义。我一直在寻找有关设置实际上并未放入您的 web.config 文件中而是存在于您的应用程序可访问的内存属性包中的事实的引用。我找不到任何关于我如何看到这个神秘袋子里的东西的参考资料,但是一旦你知道答案就很明显了。

在交换期间,暂存槽上的任何设置实际上都会复制到生产槽的设置中,即它实际上会在生产槽“应用程序设置”刀片中更改它。插槽的应用程序设置刀片中的任何内容都是内存属性包中的内容。

于 2016-06-16T01:28:59.807 回答