是否可以向web.config元素添加自定义属性?

时间:2015-10-10 00:46:49

标签: asp.net iis web-config web.config-transform

我正在调查使用web.config转换来管理一大堆重写规则。重写规则存储在web.config中,如下所示:

<rule name="somename"
      xdt:Locator="Match(name)"
      xdt:Transform="Replace">
  <match filterByTags="Img, Link, Script" pattern="^/content/(.*)" ignoreCase="true" />
  <action type="Rewrite" value="http://foo.com/{R:1}" />
</rule>

我可以编写如下的转换文件:

<rule name="somename">
  <match filterByTags="Img, Link, Script" pattern="^/content/(.*)" ignoreCase="true" />
  <action extraid="content" type="Rewrite" value="http://foo.com/{R:1}"  />
</rule>

这有效,但它依赖于name属性,这是开发人员可能编辑的内容。我想要做的是为动作添加一个额外的属性,然后匹配。所以web.config将是:

<action
    xdt:Locator="Match(extraid)"
    xdt:Transform="Replace"
    extraid="content"
  type="Rewrite" value="http://foo.com/{R:1}" />

然后转换可以大大简化为:

<?php ... ?>

这使得变换不太可能被意外破坏,并使变换本身更小更简单。转换工具接受并正常工作,但源web.config无效,因为我看起来无法向web.config元素添加属性。 Visual Studio和IIS / ASP.NET都抱怨无法识别的属性。我尝试为该属性创建命名空间,但这并没有帮助。

请注意,我尝试了各种方法,它们都导致编译失败或运行时错误(500错误 - 无法识别的属性)。

有没有办法将属性添加到现有配置部分/元素?

0 个答案:

没有答案