簡體   English   中英

在啟動我的MVC3應用程序時,在mscorlib.dll中出現“類型'System.StackOverflowException'的未處理異常”?

[英]On starting my MVC3 application, getting “An unhandled exception of type 'System.StackOverflowException' occurred in mscorlib.dll”?

我無法捕捉到這里發生的事情。 我的global.asax文件沒有任何異國情調,但我現在無法在我的本地IIS Express服務器上啟動我的MVC3應用程序:

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);捕獲異常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   

我曾經使用新的MVC 3應用程序模板獲得相同的錯誤。 所以,我為Visual Studio 2010重新安裝了MVC 3和MVC 3工具。它現在對我有用。

我為Visual Studio 2010安裝了Service Pack,可能安裝與異常有關

經過大約6個小時的挫折,我最終放棄了這一點。 我將所有代碼移植到一個新的MVC應用程序中,並且它有效。 去搞清楚。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM