用于 Web 应用程序项目部署的 Web.config 转换语法

简介:
Web.config 文件通常包括根据应用程序的运行环境而必须不同的设置。   例如,在部署 Web.config 文件时,您可能必须更改数据库连接字符串或禁用调试。   对于 Web 应用程序项目,ASP.NET 提供了一些工具,用于自动完成在部署这些项目时更改(转换)Web.config 文件的过程。   对于要部署到的每个环境,您将创建一个转换文件,该文件仅指定原始 Web.config 文件和适用于该环境的已部署 Web.config 文件之间的差异。

转换文件是一个 XML 文件,该文件指定在部署 Web.config 文件时应如何更改该文件。 转换操作通过使用在 XML-Document-Transform 命名空间(映射到 xdt 前缀)中定义的 XML 特性来指定。 XML-Document-Transform 命名空间定义两个特性:Locator 和 Transform Locator 特性指定要以某种方式更改的 Web.config 元素或一组元素。 Transform 特性指定要对 Locator 特性所查找的元素执行哪些操作。

下面的示例演示了转换文件的内容,该转换文件将更改连接字符串并替换 customErrors 元素:

<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<connectionStrings>
<add name="MyDB"
connectionString="value for the deployed Web.config file"
xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
</connectionStrings>
<system.web>
<customErrors defaultRedirect="GenericError.htm"
mode="RemoteOnly" xdt:Transform="Replace">
<error statusCode="500" redirect="InternalError.htm"/>
</customErrors>
</system.web>
</configuration>

转换文件的根元素必须在其开始标记中指定 XML-Document-Transform 命名空间,如前面的示例所示。 Locator 和 Transform 元素本身不会在部署的 Web.config 文件中重现。

下面各节提供有关要在转换文件中使用的语法的参考信息。

Locator 特性语法

下面每一节说明一个 Locator 特性的语法。

条件

指定一个 XPath 表达式,该表达式会追加到当前元素的 XPath 表达式。 选择了与组合 XPath 表达式匹配的元素。

语法

Locator="Condition(XPath expression)"

示例

下面的示例演示如何选择其 name 特性值为 oldname 的连接字符串元素,或其值为 oldprovider 的 providerName 特性。 在部署的 Web.config 文件中,所选元素将替换为在转换文件中指定的元素。

<configuration xmlns:xdt="...">
<connectionStrings>
<add name="AWLT" connectionString="newstring"
providerName="newprovider"
xdt:Transform="Replace"
xdt:Locator="Condition(@name='oldname'
or @providerName='oldprovider')" />
</connectionStrings>
</configuration>

作为指定的 Condition 表达式的结果应用于开发 Web.config 文件的有效 XPath 表达式如下所示:

configuration/connectionStrings[@name='AWLT' or @providerName='System.Data.SqlClient']

此表达式是将当前元素 (configuration/connectionStrings) 的隐式 XPath 条件与显式指定的表达式组合起来的结果。

Match

选择针对指定的一个或多个特性具有匹配值的一个或多个元素。 如果指定了多个特性名称,则将仅选择与所有指定特性匹配的元素。

语法

Locator="Match(comma-delimited list of one or more attribute names)"

示例

下面的示例演示如何选择连接字符串 add 元素,该元素在开发 Web.config 文件的 name 特性中具有 AWLT 在部署的 Web.config 文件中,所选元素将替换为在转换文件中指定的 add 元素。

<configuration xmlns:xdt="...">
<connectionStrings>
<add name="AWLT" connectionString="newstring"
providerName="newprovider"
xdt:Transform="Replace"
xdt:Locator="Match(name)" />
</connectionStrings>
</configuration>

Replace

将所选的一个或多个元素替换为在转换文件中指定的元素。 有关如何使用 Replace 关键字的示例,请参见 Locator 特性的示例。

语法

Transform="Replace"

XPath

指定应用于开发 Web.config 文件的绝对 XPath 表达式。 (与 Condition 不同,所指定的表达式不追加到与当前元素对应的隐式 XPath 表达式。)

语法

Locator="XPath(XPath expression)"

示例

下面的示例演示如何选择与前面的 Condition 关键字示例中所选元素相同的元素。

<configuration xmlns:xdt="...">
<connectionStrings>
<add name="AWLT" connectionString="newstring"
providerName="newprovider"
xdt:Transform="Replace"
xdt:Locator="XPath(configuration/connectionStrings[@name='AWLT'
or @providerName='System.Data.SqlClient'])" />
</connectionStrings>
</configuration>
Transform 特性语法

下面每一节说明一个 Transform 特性的语法。

Insert

将转换文件中定义的元素作为所选的一个或多个元素的同级进行添加。 该新元素被添加到任何集合的末尾。

语法

Transform="Insert"

示例

下面的示例演示如何选择开发 Web.config 文件中的所有连接字符串。 在部署的 Web.config 文件中,指定的连接字符串将添加到集合的末尾。

<configuration xmlns:xdt="...">
<connectionStrings>
<add name="AWLT" connectionString="newstring"
providerName="newprovider"
xdt:Transform="Insert" />
</connectionStrings>
</configuration>

InsertBefore

将转换 XML 中定义的元素直接插入到由指定 XPath 表达式选择的元素之前。 该 XPath 表达式必须是一个绝对表达式,因为它作为一个整体应用于开发 Web.config 文件,而不只是追加到当前元素的隐式 XPath 表达式中。

语法

Transform="InsertBefore(XPath expression)"

示例

下面的示例演示如何选择拒绝所有用户访问的 deny 元素,然后在它之前插入为管理员授予访问权限的 allow 元素。

<configuration xmlns:xdt="...">
<authorization>
<allow roles="Admins"
xdt:Transform="InsertBefore(/configuration/system.web/authorization/deny[@users='*'])" />
</authorization>
</configuration>

InsertAfter

将转换 XML 中定义的元素直接插入到由指定 XPath 表达式选择的元素之后。 该 XPath 表达式必须是一个绝对表达式,因为它作为一个整体应用于开发 Web.config 文件,而不是追加到当前元素的隐式 XPath 表达式中。

语法

Transform="InsertAfter(XPath expression)"

示例

下面的示例演示如何���择为管理员授予访问权限的 allow 元素,然后在它之后插入拒绝指定用户的访问的 deny 元素。

<configuration xmlns:xdt="...">
<authorization>
<deny users="UserName"
xdt:Transform="InsertAfter
(/configuration/system.web/authorization/allow[@roles='Admins'])" />
</authorization>
</configuration>

Remove

移除选定元素。 如果选择了多个元素,则移除第一个元素。

语法

Transform="Remove"

示例

下面的示例演示如何选择开发 Web.config 文件中的所有连接字符串 add 元素。 在部署的 Web.config 文件中,将仅移除第一个连接字符串元素。

<configuration xmlns:xdt="...">
<connectionStrings>
<add xdt:Transform="Remove" />
</connectionStrings>
</configuration>

RemoveAll

移除选定的一个或多个元素。

语法

Transform="RemoveAll"

示例

下面的示例演示如何选择开发 Web.config 文件中的所有连接字符串。 在部署的 Web.config 文件中,将移除所有元素。

<configuration xmlns:xdt="...">
<connectionStrings>
<add xdt:Transform="RemoveAll" />
</connectionStrings>
</configuration>

RemoveAttributes

从所选元素移除指定的特性。

语法

Transform="RemoveAttributes(comma-delimited list of one or more attribute names)"

示例

下面的示例演示如何选择开发 Web.config 文件中的所有 compilation 元素。 (由于配置文件中只能有一个 compilation 元素,因此不必指定 Locator 特性。)在部署的 Web.config 文件中,将从 compilation 元素移除 debug 和 batch 特性。

<configuration xmlns:xdt="...">
<compilation
xdt:Transform="RemoveAttributes(debug,batch)">
</compilation>
</configuration>

SetAttributes

将所选元素的特性设置为指定的值。 Replace 转换特性将替换整个元素,包括其所有特性。 相反,SetAttributes 特性使您能够按原样保留元素而只更改所选特性。

语法

Transform="SetAttributes(comma-delimited list of one or more attribute names)"

示例

下面的示例演示如何选择开发 Web.config 文件中的所有 compilation 元素。 (由于配置文件中只能有一个 compilation 元素,因此不必指定 Locator 特性。)在部署的 Web.config 文件中,compilation 元素的 batch 特性的值设置为 false

<configuration xmlns:xdt="...">
<compilation
batch="false"
xdt:Transform="SetAttributes(batch)">
</compilation>
</configuration>

XSLT

将 XSLT 文件应用于所选元素。

语法

Transform="XSLT(file path)"

示例

下面的示例演示如何选择 appSettings 元素并指定在 appSettings.xslt 文件中定义的转换。

<configuration xmlns:xdt="...">
<appSettings
xdt:Transform="XSLT(C:\MyProject\appSettings.xslt)" />
</appSettings>
</configuration>
省略 Locator 特性

Locator 特性是可选的。 如果未指定 Locator 特性,要更改的元素将由为其指定 Transform 特性的元素隐式指定。 在下面的示例中,将替换整个 system.web 元素,因为未指定任何 Locator 特性来指示其他方面。

<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<system.web xdt:Transform="Replace">
<customErrors defaultRedirect="GenericError.htm"
mode="RemoteOnly">
<error statusCode="500" redirect="InternalError.htm"/>
</customErrors>
</system.web>
</configuration>
对独立元素使用 Transform 和 Locator 特性

不必在与 Locator 元素相同的元素中设置 Transform 特性。 可以在父元素上指定 Locator 元素,以选择要使用其子元素的元素。 然后可以在子元素中指定 Transform 特性来将更改应用于子元素。

下面的示例演示如何使用 Locator 特性为指定路径选择 location 元素。 但是,只有所选 location 元素的子元素才能进行转换。

<configuration xmlns:xdt="...">
<location path="C:\MySite\Admin" xdt:Locator="Match(path)">
<system.web>
<pages viewStateEncryptionMode="Always"
xdt:Transform="SetAttributes(viewStateEncryptionMode)" />
</system.web>
</location>
</configuration>

如果在同一元素或子元素中指定 Locator 特性但未指定 Transform 特性,则不会进行任何更改。

说明 说明

父元素上的 Transform 特性会影响子元素,即使没有为子元素指定任何 Transform 也是如此。 例如,如果将特性 xdt:Transform="Replace" 放在 system.web 元素中,则 system.web 元素的所有子元素将替换为转换文件中的内容。





本文转自黄聪博客园博客,原文链接http://www.cnblogs.com/huangcong/archive/2010/11/24/1886420.html,如需转载请自行联系原作者

相关文章
|
2月前
|
弹性计算 监控 网络安全
如何轻松使用AWS Web应用程序防火墙?
AWS WAF是Web应用防火墙,可防护常见网络攻击。通过创建Web ACL并设置规则,保护CloudFront、API网关、负载均衡器等资源。支持自定义规则与OWASP预定义规则集,结合CloudWatch实现监控日志,提升应用安全性和稳定性。
|
安全 JavaScript 前端开发
AppSpider 7.5.020 发布 - Web 应用程序安全测试
AppSpider 7.5.020 for Windows - Web 应用程序安全测试
73 0
|
2月前
|
存储 安全 Java
如何在 Spring Web 应用程序中使用 @SessionScope 和 @RequestScope
Spring框架中的`@SessionScope`和`@RequestScope`注解用于管理Web应用中的状态。`@SessionScope`绑定HTTP会话生命周期,适用于用户特定数据,如购物车;`@RequestScope`限定于单个请求,适合无状态、线程安全的操作,如日志记录。合理选择作用域能提升应用性能与可维护性。
129 1
|
7月前
|
安全 测试技术 Linux
Acunetix v25.4 发布 - Web 应用程序安全测试
Acunetix v25.4 (Linux, Windows) - Web 应用程序安全测试
224 3
Acunetix v25.4 发布 - Web 应用程序安全测试
|
7月前
|
JSON 人工智能 前端开发
用markdown语法制作一个好看的网址导航页面(markdown-web-nav)
这是一篇关于创建网址导航页面的工具分享文章。作者介绍了从手动编写HTML代码到开发可视化工具 *markdown-web-nav* 的历程,旨在简化网址管理与导航页面生成的过程。该工具支持新增、编辑和删除网址数据,通过导入/导出JSON文件、实时预览Markdown效果以及一键复制等功能,让用户轻松制作美观的网站导航页面。文章还提供了详细的操作步骤及常见问题解答,如还原数据、获取网站图标链接等,适合不同技术水平的用户使用。
382 28
|
6月前
|
安全 Devops 测试技术
AppSpider 7.5.018 for Windows - Web 应用程序安全测试
AppSpider 7.5.018 for Windows - Web 应用程序安全测试
143 0
AppSpider 7.5.018 for Windows - Web 应用程序安全测试
|
9月前
|
安全 JavaScript Java
AppSpider Pro 7.5.015 for Windows - Web 应用程序安全测试
AppSpider Pro 7.5.015 for Windows - Web 应用程序安全测试
158 12
AppSpider Pro 7.5.015 for Windows - Web 应用程序安全测试
|
8月前
|
自然语言处理 安全 测试技术
HCL AppScan Standard 10.8.0 (Windows) - Web 应用程序安全测试
HCL AppScan Standard 10.8.0 (Windows) - Web 应用程序安全测试
548 0
HCL AppScan Standard 10.8.0 (Windows) - Web 应用程序安全测试
|
SQL 安全 PHP
【常见Web应用安全问题】---9、PHP code injection
Web应用程序的安全性问题依其存在的形势划分,种类繁多,这里不准备介绍所有的,只介绍常见的一些。  常见Web应用安全问题安全性问题的列表:   1、跨站脚本攻击(CSS or XSS, Cross Site Scripting)  2、SQL注入攻击(SQL injec...
809 0
|
1月前
|
算法 Java Go
【GoGin】(1)上手Go Gin 基于Go语言开发的Web框架,本文介绍了各种路由的配置信息;包含各场景下请求参数的基本传入接收
gin 框架中采用的路优酷是基于httprouter做的是一个高性能的 HTTP 请求路由器,适用于 Go 语言。它的设计目标是提供高效的路由匹配和低内存占用,特别适合需要高性能和简单路由的应用场景。
212 4

热门文章

最新文章