Umbraco,Azure部署插槽和连接字符串

时间:2017-11-30 13:25:19

标签: umbraco7 azure-web-app-service azure-deployment-slots

我们正在尝试为我们已经构建的Umbraco网站利用Azures部署位置。

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

我们尝试了什么

Azure部署插槽将所有已定义的应用程序设置(和连接字符串)放入环境变量并访问它们,我们可以使用Environment.GetEnvironmentVariable(),但它似乎不是告诉Umbraco做的一种方式此

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

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

(来自:ASP.NET web.config: configSource vs. file attributes

帮助

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

我甚至愿意盲目地复制和粘贴,而不理解它是如何工作的 - 我讨厌这样做:)。但是当人们在圣诞节前就想要上线的时候会发生什么事呢......

1 个答案:

答案 0 :(得分:1)

您无需使用任何代码即可使用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" />

您的插槽配置应为:

enter image description here

要替换应用设置,只需使用相同的密钥即可。所以对此:

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

你用这个: enter image description here

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