0

我们正在尝试将 Azures 部署槽用于我们构建的 Umbraco 站点。

默认情况下,Umbraco 使用在 web.config 的connectionStrings部分中定义的 DSN,我们希望它使用它所在的部署槽的连接字符串。

我们尝试过的

Azure 部署槽将所有已定义的应用程序设置(和连接字符串)放入环境变量中并访问它们,我们可以使用Environment.GetEnvironmentVariable()哪个有效,但似乎没有办法告诉 Umbraco 这样做。

因此,在 OnApplicationInitialized()(在 /App_Code/Core/UmbracoAppStart.cs 中)中,我们从 web.config 加载了连接字符串部分,从 env vars 中获取了 connstr,将 DSN 添加到连接字符串部分并保存。正确的连接字符串被抓取并存储,但这似乎回收了应用程序(由于 web.config 更改),因此我们只是得到超时。(或者 Umbraco XML 缓存错误,或者加载页面需要 20 分钟)。

我知道您可以将 appsettings 和 connectionstrings 部分存储在单独的文件中。但是文件属性(如果引用的文件被更改,不会导致回收)在 connectionStrings 部分不起作用 - 只有configSource属性并且如果更改会回收。

(来自:ASP.NET web.config:configSource 与文件属性

帮助

有没有人找到解决这个问题的方法? 我们只需要让 Umbraco 使用部署槽连接字符串——而不是 webconfig 中的那个

我什至愿意在不了解它是如何工作的情况下盲目地复制和粘贴——我讨厌这样做:)。但这就是当人们同意客户想要在圣诞节前上线时发生的情况......

4

1 回答 1

2

无需执行任何代码即可使用 Azure 连接字符串或应用设置。只需为它们提供与 web.config 上相同的键/名称,它们就会被使用。

因此,如果您的网络配置中有此内容:

<add name="umbracoDbDSN" connectionString="Server={server};Initial Catalog={db};Persist Security Info=False;User ID={user};Password={password};MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=300;" providerName="System.Data.SqlClient" />

您的插槽配置应该是这样的:

在此处输入图像描述

要替换应用程序设置,只需使用相同的键。所以为此:

<add key="umbracoUseSSL" value="false" />

你会用这个: 在此处输入图像描述

如果您希望设置特定于插槽,则必须激活该Slot setting复选框。

于 2017-12-01T01:11:54.480 回答