[web.config]如何灵活使用配置文件
2018-02-01 10:59
806 查看
摘要
在实际项目中,经常遇到比较多的环境,比如开发环境,测试环境,生产环境。对于这些环境,可能会有不同接口调用,不同的数据库连接字符串等等。那么该如何实现不同环境的参数快速切换呢?当然,最笨的方式就是,发布前,针对不同的环境,注释放开注释的操作。这也是经常使用的方法,如果环境较少,这种还可以应付,如果环境较多,或者那天不在状态,发布的时候,忘记注释放开某些注释,就造成不必要的麻烦。如何解决
配置文件中Transformation,可以快速解决环境切换带来的麻烦。一个例子
新建一个测试mvc应用
![](https://oscdn.geek-share.com/Uploads/Images/Content/202003/25/9e6076e99f2d87b904101778bca593ff.png)
在上面可以看出,默认站点创建的时候,有两种配置文件,debug和release。分别对应下面两种环境:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202003/25/83f93927285be1f918b1f96b3c09ce1e.png)
发布的时候,切换到release环境,那么就是使用的Web.Release.config配置文件。
添加生成环境配置,选择上图的配置管理器
![](https://oscdn.geek-share.com/Uploads/Images/Content/202003/25/6c2f4cb67637fff45fdbf209c407f5fd.png)
新建配置
名称为Produce
![](https://oscdn.geek-share.com/Uploads/Images/Content/202003/25/09d424ab7360249eacdaee0c69ea9d70.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202003/25/9b04c1cfa45784cad35a960676857211.png)
1、查看web.config内容,比如这里有这样的一个数据库连接字符串
<connectionStrings> <add connectionString="debugconn............" name="mydb"/> </connectionStrings>
2、查看web.produce.config
<?xml version="1.0" encoding="utf-8"?> <!-- 有关使用 web.config 转换的详细信息,请访问 http://go.microsoft.com/fwlink/?LinkId=125889 --> <configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"> <!-- 在下例中,“SetAttributes”转换将更改 “connectionString”的值,以仅在“Match”定位器 找到值为“MyDB”的特性“name”时使用“ReleaseSQLServer”。 <connectionStrings> <add name="MyDB" connectionString="Data Source=ReleaseSQLServer;Initial Catalog=MyReleaseDB;Integrated Security=True" xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/> </connectionStrings> --> <connectionStrings> <add name="mydb" connectionString="Data Source=ReleaseSQLServer;Initial Catalog=MyReleaseDB;Integrated Security=True" xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/> </connectionStrings> <system.web> <compilation xdt:Transform="RemoveAttributes(debug)" /> <!-- 在下例中,“Replace”转换将替换 web.config 文件的整个 <customErrors> 节。 请注意,由于 在 <system.web> 节点下仅有一个 customErrors 节,因此不需要使用“xdt:Locator”特性。 <customErrors defaultRedirect="GenericError.htm" mode="RemoteOnly" xdt:Transform="Replace"> <error statusCode="500" redirect="InternalError.htm"/> </customErrors> --> </system.web> </configuration>
xdt:Transform="Replace":转换规则为替换。
xdt:Locator="Match(name),:匹配规则,匹配name
那么就是用Web.Produce.config中的这个配置节用来替换web.config中name为mydb的配置项。
测试
发布站点![](https://oscdn.geek-share.com/Uploads/Images/Content/202003/25/c1c03de30789fa0b1b1200f9296ff130.png)
选择Produce配置文件,然后发布,查看发布后的web.config文件,是否替换成功。
![](https://oscdn.geek-share.com/Uploads/Images/Content/202003/25/88c6ff2dac1746318699ef233f4e992d.png)
通过上图,你会发现,发布后使用的是我们希望的数据库连接字符串。
Transformation常用语法
可参考这篇文章:ASP.NET 4.0 新特性--Web.Config Transformation(原创)
总结
通过这种方式,虽然刚开始规则有些麻烦,但是麻烦一次,受益终身不是么。如果还考,注释,然后释放注释的操作,每次都要操作,对新来的小伙伴无疑是非常坑的。相关文章推荐
- 使用Web.Config Transformation配置灵活的配置文件
- 使用Web.Config Transformation配置灵活的配置文件
- 使用Web.Config Transformation配置灵活的配置文件
- 使用Web.Config Transformation配置灵活的配置文件
- 使用Web.Config Transformation配置灵活的配置文件
- 如何在web.config 或者 app.config 文件中配置自定义节点
- 如何使用svconfigeditor.exe编辑WCF Service配置文件--配置Diagnostics进行WCF Service的log和Trace(三)
- 使用外联文件对Web.config的appSettings进行配置
- 三层架构中web.config配置文件使用
- Web.Config配置文件中customErrors元素的使用方法
- Web.Config配置文件中customErrors元素的使用方法(转)
- [转]ASP.NET Web.config配置文件的基本使用方法
- ASP.NET:使用web.config文件进行配置
- web.config配置文件如何设置
- Active Report使用心得(一):配置iis及web.config文件
- 使用web.config配置文件
- 如何配置Web.config文件 for ASP.NET
- 如何在web.config文件中配置连接Access数据库?
- 如何配置Web.config文件 for ASP.NET
- ASP.Net2.0使用Log4Net(二)使用单独的配置文件,不放在web.config