繁体   English   中英

不要使用GIT覆盖Azure上的配置文件

[英]Do not overwrite config file on Azure using GIT

我有一个托管在Azure上的Web应用程序。
当前,有一些网站使用的代码与从Bitbucket中检索到的代码相同。
各种安装之间的唯一区别是,它们在针对不同数据库的web.config文件中具有不同的连接字符串。

每当我进行错误修复时,我都会在bitbucket上上传新代码,Azure会从BitBucket获取此代码。
当前有5个应用程序具有相同的代码,每次我在bitbucket上上传新代码时,都必须在Azure上手动编辑web.config文件,以便为每个应用程序定位正确的数据库。

当它从Bitbucket接收新代码时,是否有一种方法指示Azure不要覆盖web.config文件?

可能不是版本web.config ,而是模板文件web.config.tpl和值文件(每个应用程序都有值)

然后,您可以使用内容过滤器驱动程序 ,并使用.gitattributes声明

弄脏 (图片来自“ 自定义Git-Git属性 ”,来自“ Pro Git书 ”)

生成的实际web.config仍然被忽略( .gitignore )。
这意味着您的实际工作树不会变得“肮脏”。

涂抹脚本选择正确的值文件,并根据在git checkout期间应用涂抹脚本的模板生成正确的web.config

根据您要部署的网站更改设置的责任可能在发行版中。 VSTS支持从BitBucket等源向Azure发布软件。 创建一个VSTS帐户。 在帐户中创建一个项目。 创建一个新的版本并将BitBucket配置为源。 创建一个发布以将Web应用程序部署到五个位置中的每个位置。 使用变量为每个Web应用程序设置不同的连接字符串。

为什么根本不需要在web.config中对连接字符串进行硬编码。 只需从“应用程序设置”中的代码中进行选择即可。

https://azure.microsoft.com/zh-cn/documentation/articles/web-sites-configure/

对于.NET应用程序,这些连接字符串将在运行时注入到您的.NET配置connectionStrings设置中,并覆盖键等于链接的数据库名称的现有条目。

using System.Configuration;

// Define AzureSQLConnStr in Portal -> Web App -> Application Settings
string AzureSQLConnStr = ConfigurationManager.ConnectionStrings["AzureSQLConnStr"];

在门户中定义的应用程序设置/连接字符串将在运行时覆盖来自web.config / app.config的值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM