Я не могу понять, что здесь происходит. В моем файле global.asax нет ничего экзотического, но я просто не могу запустить приложение MVC3 на локальном сервере IIS Express:
public class MvcApplication : System.Web.HttpApplication
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
}
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Paginate",
"{controller}/Paginate/{itemsPerPage}/{pageNumber}/{searchPhrase}", //URL with parameters
new { controller = "Home", action = "Paginate", itemsPerPage = Configuration.DefaultPageSize, pageNumber = 1, searchPhrase = UrlParameter.Optional },
new { itemsPerPage = @"\d+", pageNumber = @"\d+" }
);
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
}
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
RegisterGlobalFilters(GlobalFilters.Filters);
RegisterRoutes(RouteTable.Routes);
}
}
Исключение фиксируется на RegisterGlobalFilters(GlobalFilters.Filters);
, но если я его закомментирую, это произойдет на AreaRegistration.RegisterAllAreas();
. Если я закомментирую оба, это произойдет на RegisterRoutes(RouteTable.Routes);
. Как мне даже устранить эту проблему? Я не могу поставить точку останова, которая поймает!
Обновление: вот стеки вызовов, которые я собираю:
Это из-за того, что все три включены:
mscorlib.dll!System.Reflection.RuntimeModule.GetTypes() + 0x5 bytes
mscorlib.dll!System.Reflection.Assembly.GetTypes() + 0x4f bytes
System.Web.Mvc.dll!System.Web.Mvc.TypeCacheUtil.FilterTypesInAssemblies(System.Web.Mvc.IBuildManager buildManager, System.Predicate<System.Type> predicate) + 0xa5 bytes
System.Web.Mvc.dll!System.Web.Mvc.TypeCacheUtil.GetFilteredTypesFromAssemblies(string cacheName = "MVC-AreaRegistrationTypeCache.xml", System.Predicate<System.Type> predicate, System.Web.Mvc.IBuildManager buildManager = {System.Web.Mvc.BuildManagerWrapper}) + 0x40 bytes
System.Web.Mvc.dll!System.Web.Mvc.AreaRegistration.RegisterAllAreas(System.Web.Routing.RouteCollection routes = Count = Cannot evaluate expression because the current thread is in a stack overflow state., System.Web.Mvc.IBuildManager buildManager, object state = null) + 0x57 bytes
System.Web.Mvc.dll!System.Web.Mvc.AreaRegistration.RegisterAllAreas(object state) + 0x2e bytes
System.Web.Mvc.dll!System.Web.Mvc.AreaRegistration.RegisterAllAreas() + 0x7 bytes
>GHM.DFP.AdminUI.DLL!GHM.DFP.AdminUI.MvcApplication.Application_Start() Line 36 C#
[Native to Managed Transition]
System.Web.dll!System.Web.HttpApplication.InvokeMethodWithAssert(System.Reflection.MethodInfo method, int paramCount, object eventSource, System.EventArgs eventArgs) + 0x3c bytes
System.Web.dll!System.Web.HttpApplication.ProcessSpecialRequest(System.Web.HttpContext context = {System.Web.HttpContext}, System.Reflection.MethodInfo method, int paramCount, object eventSource, System.EventArgs eventArgs, System.Web.SessionState.HttpSessionState session) + 0xef bytes
System.Web.dll!System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode(System.Web.HttpContext context = {System.Web.HttpContext}, System.Web.HttpApplication app) + 0x13e bytes
System.Web.dll!System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(System.IntPtr appContext = 723127104, System.Web.HttpContext context = {System.Web.HttpContext}, System.Reflection.MethodInfo[] handlers) + 0x84 bytes
System.Web.dll!System.Web.HttpApplication.InitSpecial(System.Web.HttpApplicationState state, System.Reflection.MethodInfo[] handlers, System.IntPtr appContext = 723127104, System.Web.HttpContext context) + 0xc3 bytes
System.Web.dll!System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(System.IntPtr appContext, System.Web.HttpContext context) + 0x154 bytes
System.Web.dll!System.Web.Hosting.PipelineRuntime.InitializeApplication(System.IntPtr appContext = 723127104) + 0xfe bytes
[Appdomain Transition]
[Native to Managed Transition]
webengine4.dll!RegisterModule() + 0x3740 bytes
[Frames below may be incorrect and/or missing, no symbols loaded for webengine4.dll]
webengine4.dll!RegisterModule() + 0x47e bytes
iiscore.dll!01d328cd()
iiscore.dll!01d1a777()
iiscore.dll!01d33247()
iiscore.dll!01d334c2()
iiscore.dll!01d25d67()
iiscore.dll!01d26196()
iiscore.dll!01d2686c()
iiscore.dll!01d26d04()
w3dt.dll!HTTP_WRAPPER::QueryState() + 0x17fc bytes
w3dt.dll!HTTP_WRAPPER::QueryState() + 0x23 bytes
w3tp.dll!THREAD_POOL::PostCompletion() + 0xd6 bytes
w3tp.dll!THREAD_POOL::TerminateThreadPool() + 0xa5 bytes
w3tp.dll!0f311f55()
kernel32.dll!BaseThreadInitThunk() + 0x12 bytes
ntdll.dll!RtlInitializeExceptionChain() + 0xef bytes
ntdll.dll!RtlInitializeExceptionChain() + 0xc2 bytes
Я отключаю AreaRegistration.RegisterAllAreas()
и вот что я получаю:
mscorlib.dll!System.Reflection.RuntimeModule.GetTypes() + 0x5 bytes
mscorlib.dll!System.Reflection.Assembly.GetTypes() + 0x4f bytes
System.Web.Mvc.dll!System.Web.Mvc.TypeCacheUtil.FilterTypesInAssemblies(System.Web.Mvc.IBuildManager buildManager, System.Predicate<System.Type> predicate) + 0xa5 bytes
System.Web.Mvc.dll!System.Web.Mvc.TypeCacheUtil.GetFilteredTypesFromAssemblies(string cacheName = "MVC-ControllerTypeCache.xml", System.Predicate<System.Type> predicate, System.Web.Mvc.IBuildManager buildManager = {System.Web.Mvc.BuildManagerWrapper}) + 0x40 bytes
System.Web.Mvc.dll!System.Web.Mvc.ControllerTypeCache.EnsureInitialized(System.Web.Mvc.IBuildManager buildManager) + 0x80 bytes
System.Web.Mvc.dll!System.Web.Mvc.DefaultControllerFactory.GetControllerTypeWithinNamespaces(System.Web.Routing.RouteBase route = {System.Web.Routing.Route}, string controllerName = "Home", System.Collections.Generic.HashSet<string> namespaces = null) + 0x4d bytes
System.Web.Mvc.dll!System.Web.Mvc.DefaultControllerFactory.GetControllerType(System.Web.Routing.RequestContext requestContext, string controllerName) + 0x234 bytes
System.Web.Mvc.dll!System.Web.Mvc.DefaultControllerFactory.System.Web.Mvc.IControllerFactory.GetControllerSessionBehavior(System.Web.Routing.RequestContext requestContext = {System.Web.Routing.RequestContext}, string controllerName) + 0x3e bytes
System.Web.Mvc.dll!System.Web.Mvc.MvcRouteHandler.GetSessionStateBehavior(System.Web.Routing.RequestContext requestContext) + 0x7d bytes
System.Web.Mvc.dll!System.Web.Mvc.MvcRouteHandler.GetHttpHandler(System.Web.Routing.RequestContext requestContext = {System.Web.Routing.RequestContext}) + 0x2a bytes
System.Web.Mvc.dll!System.Web.Mvc.MvcRouteHandler.System.Web.Routing.IRouteHandler.GetHttpHandler(System.Web.Routing.RequestContext requestContext) + 0xb bytes
System.Web.dll!System.Web.Routing.UrlRoutingModule.PostResolveRequestCache(System.Web.HttpContextBase context = {System.Web.HttpContextWrapper}) + 0x108 bytes
System.Web.dll!System.Web.Routing.UrlRoutingModule.OnApplicationPostResolveRequestCache(object sender, System.EventArgs e) + 0x57 bytes
System.Web.dll!System.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() + 0x95 bytes
System.Web.dll!System.Web.HttpApplication.ExecuteStep(System.Web.HttpApplication.IExecutionStep step = {System.Web.HttpApplication.SyncEventExecutionStep}, ref bool completedSynchronously = false) + 0x4c bytes
System.Web.dll!System.Web.HttpApplication.PipelineStepManager.ResumeSteps(System.Exception error) + 0x39f bytes
System.Web.dll!System.Web.HttpApplication.BeginProcessRequestNotification(System.Web.HttpContext context, System.AsyncCallback cb) + 0x5a bytes
System.Web.dll!System.Web.HttpRuntime.ProcessRequestNotificationPrivate(System.Web.Hosting.IIS7WorkerRequest wr = {System.Web.Hosting.IIS7WorkerRequest}, System.Web.HttpContext context = {System.Web.HttpContext}) + 0xbe bytes
System.Web.dll!System.Web.Hosting.PipelineRuntime.ProcessRequestNotificationHelper(System.IntPtr managedHttpContext, System.IntPtr nativeRequestContext = 730752100, System.IntPtr moduleData, int flags) + 0x247 bytes
System.Web.dll!System.Web.Hosting.PipelineRuntime.ProcessRequestNotification(System.IntPtr managedHttpContext, System.IntPtr nativeRequestContext, System.IntPtr moduleData, int flags) + 0x29 bytes
webengine4.dll!RegisterModule() + 0x19b7 bytes
[Frames below may be incorrect and/or missing, no symbols loaded for webengine4.dll]
webengine4.dll!RegisterModule() + 0x25e8 bytes
webengine4.dll!MgdGetServerVariableA() + 0x2fd6 bytes
webengine4.dll!MgdGetServerVariableA() + 0x3485 bytes
iiscore.dll!005f086a()
iiscore.dll!005f1724()
iiscore.dll!005de053()
iiscore.dll!005e0779()
iiscore.dll!005e2cd6()
iisfreb.dll!RegisterModule() + 0x1870 bytes
iiscore.dll!005e0f63()
webengine4.dll!MgdReleaseNativeConfigSystem() + 0x9e bytes
webengine4.dll!MgdIndicateCompletion() + 0x24 bytes
[Managed to Native Transition]
System.Web.dll!System.Web.Hosting.PipelineRuntime.ProcessRequestNotificationHelper(System.IntPtr managedHttpContext, System.IntPtr nativeRequestContext, System.IntPtr moduleData, int flags) + 0x2cc bytes
System.Web.dll!System.Web.Hosting.PipelineRuntime.ProcessRequestNotification(System.IntPtr managedHttpContext, System.IntPtr nativeRequestContext, System.IntPtr moduleData, int flags) + 0x29 bytes
[Appdomain Transition]
webengine4.dll!RegisterModule() + 0x19b7 bytes
webengine4.dll!MgdGetServerVariableA() + 0x2cc0 bytes
kernel32.dll!BaseThreadInitThunk() + 0x12 bytes
ntdll.dll!RtlInitializeExceptionChain() + 0xef bytes
ntdll.dll!RtlInitializeExceptionChain() + 0xc2 bytes
Комментируя RegisterGlobalFilters(GlobalFilters.Filters)
, я получаю это:
mscorlib.dll!System.Reflection.RuntimeModule.GetTypes() + 0x5 bytes
mscorlib.dll!System.Reflection.Assembly.GetTypes() + 0x4f bytes
System.Web.Mvc.dll!System.Web.Mvc.TypeCacheUtil.FilterTypesInAssemblies(System.Web.Mvc.IBuildManager buildManager, System.Predicate<System.Type> predicate) + 0xa5 bytes
System.Web.Mvc.dll!System.Web.Mvc.TypeCacheUtil.GetFilteredTypesFromAssemblies(string cacheName = "MVC-ControllerTypeCache.xml", System.Predicate<System.Type> predicate, System.Web.Mvc.IBuildManager buildManager = {System.Web.Mvc.BuildManagerWrapper}) + 0x40 bytes
System.Web.Mvc.dll!System.Web.Mvc.ControllerTypeCache.EnsureInitialized(System.Web.Mvc.IBuildManager buildManager) + 0x80 bytes
System.Web.Mvc.dll!System.Web.Mvc.DefaultControllerFactory.GetControllerTypeWithinNamespaces(System.Web.Routing.RouteBase route = {System.Web.Routing.Route}, string controllerName = "Home", System.Collections.Generic.HashSet<string> namespaces = null) + 0x4d bytes
System.Web.Mvc.dll!System.Web.Mvc.DefaultControllerFactory.GetControllerType(System.Web.Routing.RequestContext requestContext, string controllerName) + 0x234 bytes
System.Web.Mvc.dll!System.Web.Mvc.DefaultControllerFactory.System.Web.Mvc.IControllerFactory.GetControllerSessionBehavior(System.Web.Routing.RequestContext requestContext = {System.Web.Routing.RequestContext}, string controllerName) + 0x3e bytes
System.Web.Mvc.dll!System.Web.Mvc.MvcRouteHandler.GetSessionStateBehavior(System.Web.Routing.RequestContext requestContext) + 0x7d bytes
System.Web.Mvc.dll!System.Web.Mvc.MvcRouteHandler.GetHttpHandler(System.Web.Routing.RequestContext requestContext = {System.Web.Routing.RequestContext}) + 0x2a bytes
System.Web.Mvc.dll!System.Web.Mvc.MvcRouteHandler.System.Web.Routing.IRouteHandler.GetHttpHandler(System.Web.Routing.RequestContext requestContext) + 0xb bytes
System.Web.dll!System.Web.Routing.UrlRoutingModule.PostResolveRequestCache(System.Web.HttpContextBase context = {System.Web.HttpContextWrapper}) + 0x108 bytes
System.Web.dll!System.Web.Routing.UrlRoutingModule.OnApplicationPostResolveRequestCache(object sender, System.EventArgs e) + 0x57 bytes
System.Web.dll!System.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() + 0x95 bytes
System.Web.dll!System.Web.HttpApplication.ExecuteStep(System.Web.HttpApplication.IExecutionStep step = {System.Web.HttpApplication.SyncEventExecutionStep}, ref bool completedSynchronously = false) + 0x4c bytes
System.Web.dll!System.Web.HttpApplication.PipelineStepManager.ResumeSteps(System.Exception error) + 0x39f bytes
System.Web.dll!System.Web.HttpApplication.BeginProcessRequestNotification(System.Web.HttpContext context, System.AsyncCallback cb) + 0x5a bytes
System.Web.dll!System.Web.HttpRuntime.ProcessRequestNotificationPrivate(System.Web.Hosting.IIS7WorkerRequest wr = {System.Web.Hosting.IIS7WorkerRequest}, System.Web.HttpContext context = {System.Web.HttpContext}) + 0xbe bytes
System.Web.dll!System.Web.Hosting.PipelineRuntime.ProcessRequestNotificationHelper(System.IntPtr managedHttpContext, System.IntPtr nativeRequestContext = 730145292, System.IntPtr moduleData, int flags) + 0x247 bytes
System.Web.dll!System.Web.Hosting.PipelineRuntime.ProcessRequestNotification(System.IntPtr managedHttpContext, System.IntPtr nativeRequestContext, System.IntPtr moduleData, int flags) + 0x29 bytes
webengine4.dll!RegisterModule() + 0x19b7 bytes
[Frames below may be incorrect and/or missing, no symbols loaded for webengine4.dll]
webengine4.dll!RegisterModule() + 0x25e8 bytes
webengine4.dll!MgdGetServerVariableA() + 0x2fd6 bytes
webengine4.dll!MgdGetServerVariableA() + 0x3485 bytes
iiscore.dll!0fcd086a()
iiscore.dll!0fcd1724()
iiscore.dll!0fcbe053()
iiscore.dll!0fcc0779()
iiscore.dll!0fcc2cd6()
iisfreb.dll!RegisterModule() + 0x1870 bytes
iiscore.dll!0fcc0f63()
webengine4.dll!MgdReleaseNativeConfigSystem() + 0x9e bytes
webengine4.dll!MgdIndicateCompletion() + 0x24 bytes
[Managed to Native Transition]
System.Web.dll!System.Web.Hosting.PipelineRuntime.ProcessRequestNotificationHelper(System.IntPtr managedHttpContext, System.IntPtr nativeRequestContext, System.IntPtr moduleData, int flags) + 0x2cc bytes
System.Web.dll!System.Web.Hosting.PipelineRuntime.ProcessRequestNotification(System.IntPtr managedHttpContext, System.IntPtr nativeRequestContext, System.IntPtr moduleData, int flags) + 0x29 bytes
[Appdomain Transition]
webengine4.dll!RegisterModule() + 0x19b7 bytes
webengine4.dll!MgdGetServerVariableA() + 0x2cc0 bytes
kernel32.dll!BaseThreadInitThunk() + 0x12 bytes
ntdll.dll!RtlInitializeExceptionChain() + 0xef bytes
ntdll.dll!RtlInitializeExceptionChain() + 0xc2 bytes