繁体   English   中英

web.config多个配置源

[英]web.config Multiple config sources

我需要声明多个配置源来重写url,因为重写列表很长(+10000次重写)。

这不起作用:

  <rewrite>
    <rules configSource="App_Config\Rewrite\UrlRewrites1.config"></rules>
    <rules configSource="App_Config\Rewrite\UrlRewrites2.config"></rules>
  </rewrite>
</system.webServer>

除了以下例外:

配置部分“ system.webServer / rewrite / rules”已经定义。 每个配置文件中的节只能出现一次。

“ configSource”仅支持一个配置文件,因此默认情况下不能有多个配置文件。 这对于web.config中的节点是可行的。

我建议您尝试以编程方式进行操作。您可以使用ServerManager类来访问网站配置。 您可能需要添加对Microsoft.Web.Administration的引用。 阅读您的配置文件并手动添加每个规则。

像这样:

using (ServerManager serverManager = new ServerManager())
{
   Configuration config = serverManager.GetWebConfiguration("Default Web Site");
   ConfigurationSection rulesSection = config.GetSection("system.webServer/rewrite/rules");
   ConfigurationElementCollection rulesCollection = rulesSection.GetCollection();

   ConfigurationElement ruleElement = rulesCollection.CreateElement("rule");
   ruleElement["name"] = @"rule";

   ConfigurationElement matchElement = ruleElement.GetChildElement("match");
   matchElement["url"] = @"foo\.htm";

   ConfigurationElement actionElement = ruleElement.GetChildElement("action");
   actionElement["type"] = @"Rewrite";
   actionElement["url"] = @"bar.htm";
   rulesCollection.Add(ruleElement);

   serverManager.CommitChanges();

}

还有另一种选择,但我自己还没有尝试过。 您可以为URL重写模块编写自己的自定义重写提供程序。 这是一个演练方法: 自定义重写提供者演练

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM