我目前正在寫一篇新聞文章方面的應用程序,我添加了新的路線(新文章)到我的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