我试图提高我的MVC2应用程序启动速度。
我进行了第一轮性能采样,发现
MvcAreaRegistration.RegisterAllAreas
启动时间的大部分被占用了。
我在这里读到,您也可以手动注册区域,我想尝试一下,但是我不确定该页面上的语法是如何工作的。
所以我的(第一个)问题是:如何手动注册我的区域?
我试图提高我的MVC2应用程序启动速度。
我进行了第一轮性能采样,发现
MvcAreaRegistration.RegisterAllAreas
启动时间的大部分被占用了。
我在这里读到,您也可以手动注册区域,我想尝试一下,但是我不确定该页面上的语法是如何工作的。
所以我的(第一个)问题是:如何手动注册我的区域?
首先在Global.asax中准备一个辅助方法,代码如下:
private static void RegisterArea<T>(RouteCollection routes, object state) where T : AreaRegistration
{
AreaRegistration registration = (AreaRegistration)Activator.CreateInstance(typeof(T));
AreaRegistrationContext registrationContext = new AreaRegistrationContext(registration.AreaName, routes, state);
string areaNamespace = registration.GetType().Namespace;
if (!String.IsNullOrEmpty(areaNamespace))
registrationContext.Namespaces.Add(areaNamespace + ".*");
registration.RegisterArea(registrationContext);
}
//Replace AreaRegistration.RegisterAllAreas(); with lines like those
RegisterArea<FirstAreaRegistration>(RouteTable.Routes, null);
RegisterArea<SecondAreaRegistration>(RouteTable.Routes, null);
当您添加新的区域时,Visual Studio 会创建 AreaRegistration 类,您可以在 Areas/AreaName 目录中找到它们。
private void RegisterAreas(RouteCollection routes)
{
// AreaRegistration.RegisterAllAreas();
var route = routes.MapRoute(
"MyArea_Default",
"MyArea/{controller}/{action}/{id}",
new { controller = "App", action = "Index", id = UrlParameter.Optional },
new string[] { "MyProject.Areas.*" }
).DataTokens.Add("Area", "CDR");
}