私は現在、アプリケーションにニュース記事の側面を書いています。新しい記事(新しい記事用)を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によって取得され、うまく動作します。
私はアプリを強制することなく、これを達成したいとあなたがこの上で当てることができ、任意の光は、素晴らしいことだ
EDITを再起動しますこれは私のGlobal.asax
からRegisterRoutesですpublic 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
私が書いた関数は、基本的にRouteTable.MapRouteが何をするかのコピーです(ソースを確認し、自分で参照してください)。スレッドされた状況ではロックを使用してください。ほとんどの場合、ロックは必要ありません。 – Brendan