我有一个“顶级”网站www.ccesd.ac.uk和运行它的各种“低级”网站,例如www.ccesd.ac.uk/BritSocAt是单独的网站但共享很多代码。这些较低级别的站点在 IIS 7.5 中被指定为 Web 应用程序,并从www.ccesd.ac.uk继承一个通用的 web.config 文件,尽管它们存在于自己的应用程序池中。
我已经为 IIS 7.5 配置了 URL Rewrite 模块,这样较低级别的站点可以有自己不同的 URL,例如 www.BritSocAt.com,它映射到 www.ccesd.ac.uk/BritSocAt。
每个站点都有自己的 Global.asax 文件,其中包含为漂亮 URL 定义的 URL 路由规则。这些 URL(/Home、/About、/Contact 等)对所有站点都是通用的,包括顶级 (ccesd.ac.uk) 站点。
void Application_Start(object sender, EventArgs e)
{
// Code that runs on application startup
RegisterRoutes(System.Web.Routing.RouteTable.Routes);
}
// ** URL ROUTING **
private static void RegisterRoutes(System.Web.Routing.RouteCollection routes)
{
routes.Ignore("{resource}.axd/{*pathInfo}");
// HOME
routes.MapPageRoute("Home", "Home", "~/Body.aspx", false, new System.Web.Routing.RouteValueDictionary
{ { "control", "HomePage" } });
// CONTACT US
routes.MapPageRoute("ContactUs", "Contact", "~/Body.aspx", false, new System.Web.Routing.RouteValueDictionary
{ { "control", "CCESDContactUs" } });
// ABOUT US
routes.MapPageRoute("AboutUs", "About", "~/Body.aspx", false, new System.Web.Routing.RouteValueDictionary
{ { "control", "CCESDMissionStatement" } });
}
我从 Ruslan Yakushev 的优秀教程了解到,IIS URL 重写模块是在 Global.asax 中的 ASP.NET 路由之前处理的。这是我需要它的工作方式。但是,如果我键入www.britsocat.com/About,我发现正在使用 www.ccesd.ac.uk 的 Global.asax 文件!(我已经在测试中验证了这一点。)此外,这发生在 IIS URL 重写之前。换句话说,提供的结果页面是www.ccesd.ac.uk/Body.aspx?control=CCESDMissionStatement而不是www.ccesd.ac.uk/ BritSocAt /Body.aspx?control=CCESDMissionStatement。
我怀疑这是因为我在两个站点(Global.asax 文件)中都有相同的路由规则(“关于”)。我想我可以通过更改其中一个文件中的规则名称来解决这个问题;但这通常是不可取的,尤其是对于“家庭”。
有什么我错过的或我能做些什么来解决它吗?