摘要

在实际项目中,经常遇到比较多的环境,比如开发环境,测试环境,生产环境。对于这些环境,可能会有不同接口调用,不同的数据库连接字符串等等。那么该如何实现不同环境的参数快速切换呢?当然,最笨的方式就是,发布前,针对不同的环境,注释放开注释的操作。这也是经常使用的方法,如果环境较少,这种还可以应付,如果环境较多,或者那天不在状态,发布的时候,忘记注释放开某些注释,就造成不必要的麻烦。

如何解决

配置文件中Transformation,可以快速解决环境切换带来的麻烦。

一个例子

新建一个测试mvc应用

在上面可以看出,默认站点创建的时候,有两种配置文件,debug和release。分别对应下面两种环境:

发布的时候,切换到release环境,那么就是使用的Web.Release.config配置文件。

添加生成环境配置,选择上图的配置管理器

新建配置

名称为Produce

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="" redirect="InternalError.htm"/>
</customErrors>
-->
</system.web>
</configuration>

xdt:Transform="Replace":转换规则为替换。
xdt:Locator="Match(name),:匹配规则,匹配name
那么就是用Web.Produce.config中的这个配置节用来替换web.config中name为mydb的配置项。

测试

发布站点

选择Produce配置文件,然后发布,查看发布后的web.config文件,是否替换成功。

通过上图,你会发现,发布后使用的是我们希望的数据库连接字符串。

Transformation常用语法

可参考这篇文章:

ASP.NET 4.0 新特性--Web.Config Transformation(原创)

总结

通过这种方式,虽然刚开始规则有些麻烦,但是麻烦一次,受益终身不是么。如果还考,注释,然后释放注释的操作,每次都要操作,对新来的小伙伴无疑是非常坑的。

[web.config]如何灵活使用配置文件的更多相关文章

  1. ASP.NET 多环境下配置文件web.config的灵活配置

    调试,发布Asp.net程序的时候,开发环境和发布环境的Web.Config往往不同,比如connectionstring等.如果常常有调试,发布的需求,就需要常常修改web.config文件,这往往 ...

  2. ASP.NET 多环境下配置文件web.config的灵活配置---转

    注意:本功能在.Net Core中已经不可用,暂时需手动修改web.config中的信息,或者将其设置在appsettings.XXX.json中,然后再使用web.config中的环境变量来制定使用 ...

  3. ASP.NET Web.config文件的配置(Configuration API)

    本次我们讨论主要聚焦在以下Web.config配置文件的设置值的读取. 1.<connectionString />连接字符串的读取. 2.<appSettings />应用程 ...

  4. Web.Config Transformation配置灵活的配置文件

    使用Web.Config Transformation配置灵活的配置文件 发布Asp.net程序的时候,开发环境和发布环境的Web.Config往往不同,比如connectionstring等.如果常 ...

  5. 使用Web.Config Transformation配置灵活的配置文件

    发布Asp.net程序的时候,开发环境和发布环境的Web.Config往往不同,比如connectionstring等.如果常常有发布的需求,就需要常常修改web.config文件,这往往是一件非常麻 ...

  6. Web.config配置文件详解

    整理了一下ASP.NET Web.config配置文件的基本使用方法.很适合新手参看,由于Web.config在使用很灵活,可以自定义一些节点.所以这里只介绍一些比较常用的节点. <?xml v ...

  7. [转]Web.config配置文件详解(新手必看)

    本文转自:http://www.cnblogs.com/gaoweipeng/archive/2009/05/17/1458762.html 花了点时间整理了一下ASP.NET Web.config配 ...

  8. 转:Web.config配置文件详解(新手必看)

    转:http://www.cnblogs.com/gaoweipeng/archive/2009/05/17/1458762.html 花了点时间整理了一下ASP.NET Web.config配置文件 ...

  9. Web.config配置文件

    优点:Web.config配置文件使得ASP.NET应用程序的配置变得灵活高效和容易实现并为ASP.NET应用提供了可扩展的配置,使得应用程序能够自定义配置,同时还包括的优点有:配置设置易读性.更新的 ...

随机推荐

  1. STS热部署,springboot项目中修改代码不用重新启动服务

    方法如下: 1.在pom文件中引入  devtools  依赖: <dependency> <groupId>org.springframework.boot</grou ...

  2. selenium玩转svg操作

    今天写脚本发现页面有svg结构,里面的元素无法定位,查找很多资料,然后就记录下来 初步尝试直接在页面中获取svg中包含元素的xpath,直接利用selenium方法访问,无法捕获到相关元素信息. SV ...

  3. 使用android模拟器开发程序

    自从android studio升级到3.0之后自带的模拟器已经很好用了,尤其是升级后可以想vmware那样休眠,再次开启就可以快速启动了 以下是几点可以更方便地使用系统模拟器进行开发的小技巧,毕竟模 ...

  4. activiti主要组件解析

    Activiti内部实现中,各主要部件关系 对外,提供Service服务,它是无状态的. 这些Service包括: protected RepositoryService repositoryServ ...

  5. LeetCode(17):电话号码的字母组合

    Medium! 题目描述: 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合. 给出数字到字母的映射如下(与电话按键相同).注意 1 不对应任何字母. 示例: 输入:"23& ...

  6. laravel 5.1 Model 属性详解

    <?php namespace Illuminate\Database\Eloquent; /** * 下面提到某些词的含义: * 1.覆盖: 在继承该类 \Illuminate\Databas ...

  7. 2018-2019-2 网络对抗技术 20165301 Exp1 PC平台逆向破解

    任务一 直接修改程序机器指令,改变程序执行流程 1.输入指令objdump -d pwn5301 | more反汇编pwn1文件. 通过反汇编,可以看到main函数中的call 804891,其机器码 ...

  8. [转]解决阿里云mysql不能连接,配置mysql远程连接

    默认是不能用客户端远程连接的,阿里云提供的help.docx里面做了设置说明,mysql密码默认存放在/alidata/account.log 首先登录: mysql -u root -h local ...

  9. MAC下调试JSON接口的工具(HTTP抓包工具)

    MAC下的HTTP接口抓包工具,专业级: 专门做JSON接口测试的工具,简单好用!

  10. IIS开多个HTTPS站点

    默认情况一个服务器的IIS只能绑定一个HTTPS也就是443端口 要实现多个站点对应HTTPS只能更改IIS配置 地址:C:\Windows\system32\inetsrv\config\appli ...