【发布时间】:2015-12-01 06:14:57
【问题描述】:
在我的网络应用程序中,“子网站”和页面是动态创建的。每当创建新的子站点或(有时)创建新页面时,都会添加路由RouteTable.Routes。像这样的:
public static Site RegisterSite(Site site) {
DeregisterSite(site);
// Register non-auto-routed pages first so the default route doesn't override them.
foreach (SitePage page in site.SitePages.Where(o => !o.IsAutoRouted))
RegisterPageRoute(site, page);
RegisterDefaultRoute(site);
return site;
}
// Both RegisterPageRoute and RegisterDefaultRoute eventually make it here...
private static Route RegisterRoute(int siteId, string routeName, Route route) {
using (RouteTable.Routes.GetWriteLock()) {
RouteTable.Routes.Add(routeName, route);
}
return route;
}
我已经调试了新站点的创建,并且在创建站点时,路由已正确注册(RouteTable.Routes 包括新路由)。如果我随后尝试浏览将由新路由提供服务的 URL,它们永远不会到达应该为它们提供服务的控制器——我得到一个硬 IIS 错误页面:
找不到资源。
那么,如果正在添加路由,为什么当 MVC 框架收到对新路由之一的请求时,它们没有被“看到”?我在某处错过了一步吗?我是否需要告诉 MVC 框架“重新加载”路由表?
【问题讨论】:
标签: c# asp.net-mvc routing asp.net-mvc-5