我目前正在写一篇新闻文章方面的应用程序,我添加了新的路线(新文章)到我的RouteTable,似乎添加罚款,但路由无法访问?动态添加到RouteTable不工作
我使用的代码如下:
var routes = RouteTable.Routes;
using (routes.GetWriteLock())
{
var url = contentHelper.GetPageUrl(page);
routes.MapRoute(page.Id.ToString(), url, new { controller = "Cms", action = "Index", id = url }, new[] { "Web.Controllers.CmsController" });
}
新的URL,正如我前面所说,加入到RouteTable.Routes,但我不能让页面。在重新启动后,它由Global.asax中的RegisterRoutes拾取并正常工作。
,你可以在此有何启示将是巨大的,因为我想做到这一点,而不用对应用程序重启
编辑
这是从我的Global.asax
的的RegisterRoutespublic static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute("LogOff", "LogOff", new { controller = "Account", action = "LogOff" });
routes.MapRoute(
"News", // Route name
"News/",// URL with parameters
new { controller = "NewsPage", action = "Index" }, // Parameter defaults
new[] { "Web.Controllers.NewsController" }
);
//register all content pages
var urls = new ContentPageHelper().GetAllUrls();
foreach (var url in urls)
{
routes.MapRoute(url.Key.ToString(), url.Value, new { controller = "Cms", action = "Index", id = url.Key }, new[] { "Web.Controllers.CmsController" });
}
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}",// URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
}
如何确定添加路由是否需要锁定(当您将其作为参数传递时)? – Rodolfo 2012-10-18 18:47:47
我写的函数基本上是RouteTable.MapRoute所做的一个副本(查看源代码并亲自查看)。在线程情况下使用锁定,在大多数情况下不需要。 – Brendan 2012-10-18 20:44:08