3

我正在尝试使用外部配置文件在我的 web.config 文件location的根<configuration>部分中定义多个元素。这可能吗?

我了解如何为单个部分(例如connectionStrings)执行此操作,但是可以为配置元素中的多个元素执行此操作吗? <configuration>; 本身不允许该configSource属性。是否可以创建一个虚拟元素并在中定义它configSections,如果可以,我应该给它什么类型?

背景信息:我想这样做以便我可以定义永久重定向,可能有数百个,所以理想情况下我不想在 web.config 本身中定义它。IE

<configuration>
  <!-- rest of web.config here -->
  <!-- i need mutiple location elements so want these in an external file-->
  <location path="oldpage">
    <system.webServer>
      <httpRedirect enabled="true" destination="/uk/business" httpResponseStatus="Permanent" />
    </system.webServer>
  </location>
</configuration>
4

2 回答 2

1

以为我会在这方面添加更多细节。正如 CodeMonkey 提到的那样,URL 重写模块是要走的路,有关重写模块的更多详细信息http://www.iis.net/download/URLRewrite

这些是我对 web.config 定义规则和引用外部文件所做的更改(在system.webServer

<rewrite>
  <rewriteMaps configSource="RewriteMaps.config" />                
  <rules>
      <rule name="Rewrite rule1 for StaticRewrites">
          <match url=".*" />
          <conditions>
              <add input="{StaticRewrites:{REQUEST_URI}}" pattern="(.+)" />
          </conditions>
          <action type="Redirect" url="{C:1}" redirectType="Permanent" appendQueryString="false" />
      </rule>
  </rules>        
</rewrite>

注意:还需要更新 VS XML Schema 以停止它的抱怨 http://ruslany.net/2010/04/visual-studio-xml-intellisense-for-url-rewrite-2-0/ (确保你请参阅此博客上的评论重新更新 vs2010 的 js)

于 2012-04-23T12:24:59.590 回答
1

要执行您的要求,您只需要这样做:

<rewrite>
  <rules configSource="rewrites.config" />
</rewrite>

任何文件名都应该足够了。

您将configSource在要外化的元素上设置属性。

于 2012-04-16T12:27:13.857 回答