首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >web.config多配置源

web.config多配置源
EN

Stack Overflow用户
提问于 2015-04-08 11:16:18
回答 1查看 494关注 0票数 1

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

这不管用:

代码语言:javascript
复制
  <rewrite>
    <rules configSource="App_Config\Rewrite\UrlRewrites1.config"></rules>
    <rules configSource="App_Config\Rewrite\UrlRewrites2.config"></rules>
  </rewrite>
</system.webServer>

除以下情况外:

已经定义了配置部分'system.webServer/rewrite/rules‘。每个配置文件只能出现一次节。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-08 13:41:38

"configSource“只支持一个配置文件,因此默认情况下不能有多个配置文件。这也适用于web.config中的节点。

我建议您尝试以编程的方式完成它,您可以使用ServerManager类访问网站配置。您可能需要添加对Microsoft.Web.Administration的引用。读取您的配置文件并按任务添加每个规则。

就像这样:

代码语言:javascript
复制
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重写模块编写自己的自定义重写提供程序。下面是如何执行此操作的演练:自定义重写提供程序演练

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29513090

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档