При запуске приложения MVC3 появляется сообщение «Произошло необработанное исключение типа« System.StackOverflowException »в mscorlib.dll»? - PullRequest
4 голосов
/ 21 марта 2012

Я не могу понять, что здесь происходит. В моем файле 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   

Ответы [ 2 ]

0 голосов
/ 17 июня 2012

Раньше я получал ту же ошибку даже с новым шаблоном приложения MVC 3.Итак, я переустановил инструменты MVC 3 и MVC 3 для Visual Studio 2010. Теперь это работает для меня.

Я установил пакет обновления для Visual Studio 2010, возможно, установка имела какое-то отношение к исключению

0 голосов
/ 22 марта 2012

Я в конечном итоге отказался от этого после 6 часов разочарования. Я перенес весь свой код в новое приложение MVC, и это сработало. Пойди разберись.

...