asp.netdebuggingvisual-studio-debugginghttpexception

"Could Not Load Type" on deployed site refering to old pages/classes


When I run my code in VS debugger and set it to catch CLR exceptions when thrown, I get tons of these HttpExceptions saying "Could Not Load Type" that refer to pages/classes which have been removed from the application. It does not cause any problem with the pages (.NET knows to ignore this exception somehow), but it's really annoying.

Stack Trace:

System.Web.dll!System.Web.UI.TemplateParser.GetType(string typeName, bool ignoreCase, bool throwOnError) + 0x1b0 bytes  
System.Web.dll!System.Web.UI.TemplateParser.ProcessInheritsAttribute(string baseTypeName, string codeFileBaseTypeName, string src, System.Reflection.Assembly assembly) + 0x62 bytes    
System.Web.dll!System.Web.UI.TemplateParser.PostProcessMainDirectiveAttributes(System.Collections.IDictionary parseData) + 0x118 bytes  
System.Web.dll!System.Web.UI.PageParser.PostProcessMainDirectiveAttributes(System.Collections.IDictionary parseData) + 0x6b bytes   
System.Web.dll!System.Web.UI.TemplateParser.ProcessMainDirective(System.Collections.IDictionary mainDirective) + 0x18b bytes    
System.Web.dll!System.Web.UI.TemplateControlParser.ProcessMainDirective(System.Collections.IDictionary mainDirective) + 0x90 bytes  
System.Web.dll!System.Web.UI.PageParser.ProcessMainDirective(System.Collections.IDictionary mainDirective) + 0x11 bytes 
System.Web.dll!System.Web.UI.TemplateParser.ProcessDirective(string directiveName, System.Collections.IDictionary directive) + 0x13f bytes  
System.Web.dll!System.Web.UI.BaseTemplateParser.ProcessDirective(string directiveName, System.Collections.IDictionary directive) + 0x1ea bytes  
System.Web.dll!System.Web.UI.TemplateControlParser.ProcessDirective(string directiveName, System.Collections.IDictionary directive) + 0x44 bytes    
System.Web.dll!System.Web.UI.PageParser.ProcessDirective(string directiveName, System.Collections.IDictionary directive) + 0x45 bytes   
System.Web.dll!System.Web.UI.TemplateParser.ParseStringInternal(string text, System.Text.Encoding fileEncoding) + 0x378 bytes   
System.Web.dll!System.Web.UI.TemplateParser.ParseString(string text, System.Web.VirtualPath virtualPath, System.Text.Encoding fileEncoding) + 0x6f bytes    
System.Web.dll!System.Web.UI.TemplateParser.ParseFile(string physicalPath, System.Web.VirtualPath virtualPath) + 0x115 bytes    
System.Web.dll!System.Web.UI.TemplateParser.ParseInternal() + 0x57 bytes    
System.Web.dll!System.Web.UI.TemplateParser.Parse() + 0x64 bytes    
System.Web.dll!System.Web.Compilation.BaseTemplateBuildProvider.CodeCompilerType.get() + 0x6f bytes 
System.Web.dll!System.Web.Compilation.BuildProvider.GetCompilerTypeFromBuildProvider(System.Web.Compilation.BuildProvider buildProvider) + 0x42 bytes   
System.Web.dll!System.Web.Compilation.WebDirectoryBatchCompiler.CompileNonDependentBuildProviders(System.Collections.ICollection buildProviders) + 0xca bytes   
System.Web.dll!System.Web.Compilation.WebDirectoryBatchCompiler.Process() + 0x5d bytes  
System.Web.dll!System.Web.Compilation.BuildManager.BatchCompileWebDirectoryInternal(System.Web.Hosting.VirtualDirectory vdir, bool ignoreErrors) + 0x48 bytes   
System.Web.dll!System.Web.Compilation.BuildManager.BatchCompileWebDirectory(System.Web.Hosting.VirtualDirectory vdir, System.Web.VirtualPath virtualDir, bool ignoreErrors) + 0xbc bytes    
System.Web.dll!System.Web.Compilation.BuildManager.CompileWebFile(System.Web.VirtualPath virtualPath) + 0x5d bytes  
System.Web.dll!System.Web.Compilation.BuildManager.GetVPathBuildResultInternal(System.Web.VirtualPath virtualPath, bool noBuild, bool allowCrossApp, bool allowBuildInPrecompile, bool throwIfNotFound, bool ensureIsUpToDate) + 0x141 bytes    
System.Web.dll!System.Web.Compilation.BuildManager.GetVPathBuildResultWithNoAssert(System.Web.HttpContext context, System.Web.VirtualPath virtualPath, bool noBuild, bool allowCrossApp, bool allowBuildInPrecompile, bool throwIfNotFound, bool ensureIsUpToDate) + 0x70 bytes 
System.Web.dll!System.Web.Compilation.BuildManager.GetVPathBuildResult(System.Web.HttpContext context, System.Web.VirtualPath virtualPath, bool noBuild, bool allowCrossApp, bool allowBuildInPrecompile, bool ensureIsUpToDate) + 0x5b bytes   
System.Web.dll!System.Web.UI.BaseTemplateParser.GetReferencedType(System.Web.VirtualPath virtualPath, bool allowNoCompile) + 0x51 bytes 
System.Web.dll!System.Web.UI.PageParser.ProcessMainDirectiveAttribute(string deviceName, string name, string value, System.Collections.IDictionary parseData) + 0x67e bytes 
System.Web.dll!System.Web.UI.TemplateParser.ProcessMainDirective(System.Collections.IDictionary mainDirective) + 0xf9 bytes 
System.Web.dll!System.Web.UI.TemplateControlParser.ProcessMainDirective(System.Collections.IDictionary mainDirective) + 0x90 bytes  
System.Web.dll!System.Web.UI.PageParser.ProcessMainDirective(System.Collections.IDictionary mainDirective) + 0x11 bytes 
System.Web.dll!System.Web.UI.TemplateParser.ProcessDirective(string directiveName, System.Collections.IDictionary directive) + 0x13f bytes  
System.Web.dll!System.Web.UI.BaseTemplateParser.ProcessDirective(string directiveName, System.Collections.IDictionary directive) + 0x1ea bytes  
System.Web.dll!System.Web.UI.TemplateControlParser.ProcessDirective(string directiveName, System.Collections.IDictionary directive) + 0x44 bytes    
System.Web.dll!System.Web.UI.PageParser.ProcessDirective(string directiveName, System.Collections.IDictionary directive) + 0x45 bytes   
System.Web.dll!System.Web.UI.TemplateParser.ParseStringInternal(string text, System.Text.Encoding fileEncoding) + 0x378 bytes   
System.Web.dll!System.Web.UI.TemplateParser.ParseString(string text, System.Web.VirtualPath virtualPath, System.Text.Encoding fileEncoding) + 0x6f bytes    
System.Web.dll!System.Web.UI.TemplateParser.ParseFile(string physicalPath, System.Web.VirtualPath virtualPath) + 0x115 bytes    
System.Web.dll!System.Web.UI.TemplateParser.ParseInternal() + 0x57 bytes    
System.Web.dll!System.Web.UI.TemplateParser.Parse() + 0x64 bytes    
System.Web.dll!System.Web.Compilation.BaseTemplateBuildProvider.CodeCompilerType.get() + 0x6f bytes 
System.Web.dll!System.Web.Compilation.BuildProvider.GetCompilerTypeFromBuildProvider(System.Web.Compilation.BuildProvider buildProvider) + 0x42 bytes   
System.Web.dll!System.Web.Compilation.WebDirectoryBatchCompiler.CompileNonDependentBuildProviders(System.Collections.ICollection buildProviders) + 0xca bytes   
System.Web.dll!System.Web.Compilation.WebDirectoryBatchCompiler.Process() + 0x5d bytes  
System.Web.dll!System.Web.Compilation.BuildManager.BatchCompileWebDirectoryInternal(System.Web.Hosting.VirtualDirectory vdir, bool ignoreErrors) + 0x48 bytes   
System.Web.dll!System.Web.Compilation.BuildManager.BatchCompileWebDirectory(System.Web.Hosting.VirtualDirectory vdir, System.Web.VirtualPath virtualDir, bool ignoreErrors) + 0xbc bytes    
System.Web.dll!System.Web.Compilation.BuildManager.CompileWebFile(System.Web.VirtualPath virtualPath) + 0x5d bytes  
System.Web.dll!System.Web.Compilation.BuildManager.GetVPathBuildResultInternal(System.Web.VirtualPath virtualPath, bool noBuild, bool allowCrossApp, bool allowBuildInPrecompile, bool throwIfNotFound, bool ensureIsUpToDate) + 0x141 bytes    
System.Web.dll!System.Web.Compilation.BuildManager.GetVPathBuildResultWithNoAssert(System.Web.HttpContext context, System.Web.VirtualPath virtualPath, bool noBuild, bool allowCrossApp, bool allowBuildInPrecompile, bool throwIfNotFound, bool ensureIsUpToDate) + 0x70 bytes 
System.Web.dll!System.Web.Compilation.BuildManager.GetVirtualPathObjectFactory(System.Web.VirtualPath virtualPath, System.Web.HttpContext context, bool allowCrossApp, bool throwIfNotFound) + 0x7e bytes   
System.Web.dll!System.Web.Compilation.BuildManager.CreateInstanceFromVirtualPath(System.Web.VirtualPath virtualPath, System.Type requiredBaseType, System.Web.HttpContext context, bool allowCrossApp) + 0x35 bytes 
System.Web.dll!System.Web.UI.PageHandlerFactory.GetHandlerHelper(System.Web.HttpContext context, string requestType, System.Web.VirtualPath virtualPath, string physicalPath) + 0x20 bytes  
System.Web.dll!System.Web.UI.PageHandlerFactory.GetHandler(System.Web.HttpContext context, string requestType, string virtualPath, string path) + 0x26 bytes    
System.Web.dll!System.Web.HttpApplication.MaterializeHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() + 0x14f bytes 
System.Web.dll!System.Web.HttpApplication.ExecuteStep(System.Web.HttpApplication.IExecutionStep step, ref bool completedSynchronously) + 0xb9 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.HttpContext context) + 0xbe bytes   
System.Web.dll!System.Web.Hosting.PipelineRuntime.ProcessRequestNotificationHelper(System.IntPtr managedHttpContext, System.IntPtr nativeRequestContext, 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    
[Native to Managed Transition]  
[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]  

Solution

  • I solved this while debugging an error with the aspnet_compiler. Turns out my project had the physical .aspx files in content directories throughout my site which were "excluded" from my project. Because they were excluded, they did not throw any compile time errors.

    For some reason however, the web page (aspx) compilation build manager finds them and tries to build them! I assume this has to do with the separation in compilation between the dll and aspx files. The aspnet_compiler does not check the ProjectName.vbproj (or .csproj) for what pages are meant to be compiled, it jut compiles all of them. (If anyone could document this, it would be great)!