解析器错误无法加载类型 [命名空间].Global
Parser Error Could not load type [namespace].Global
我为此焦急了两天。我已经通读并遵循了可能数十条 SO 建议,但我仍然收到解析器错误。
TL;DR:
我们尝试了很多方法来消除网站的解析器错误,但都无济于事。
历史:
昨天我们有一个功能完美的 ASP.NET / JavaScript / AJAX 网站,我们整个生产车间都使用该网站在整个组装过程中跟踪电路板。我对其进行了备份并部署了 UI 更改并开始出现错误。将备份副本复制到站点顶部,一切都很好(除了未部署更改)。我尝试了几次,每次都使用备份进行恢复。
一夜之间,我考虑只创建一个要部署到的测试站点,而不是像以前那样剪切和粘贴,我在 VS 2010 IDE 中使用 Web Publish 到 test site,它不起作用(它部署得很好,但有相同或相似的解析器错误)。
不过...
现在,无论我做什么,主生产站点由于某种原因坏了*,试图用备份替换站点不再有效,到目前为止我们已经花了一整天的时间来调试这个.我的同事目前正在旁边建立一个最低限度的网站,让我们的生产工人在我们解决这个问题时勉强过关。
我们尝试过的:
SO question, as well as this SO question, and this SO question 中的几乎所有建议。可能还有一些我们忘记了。
- 我们已经从网络服务器中删除了测试站点,因为这两个站点对 default.aspx 文件使用了完全相同的名称(不确定这是不是一个问题,但由于我们工厂车间使用的生产站点已被破坏,在我们启动生产站点之前不再需要测试站点。
- 我们删除了 \bin 和 \obj 目录并在我们的两个开发箱上重建,并确保“构建”选项卡中的输出路径设置为:bin\
- 该应用程序在我的 Dev Box 和我同事的盒子上的调试/发布中运行得很好。
- 我们已多次删除并重新创建 IIS 服务器上的网站。
- 我们创建了一个新网站并在那里部署(同样的问题)。
- 我们已经从 [Project] > Add > New Item > Global Application Class 中删除并重新创建了 Global.asax 文件。
- 我们已经重新编译了几十次,在重新编译之前和之后关闭并重新启动 IDE(我看不出这会有什么不同,但不止一次被建议)。
- 我们已尝试从不同的 IDE / 开发箱进行部署。
- 在网络服务器上,我们在 .NET 2.0 和 .NET 4.0 之间来回更改了应用程序池(我们开始时的位置)。
- 我们已经尝试重命名 CodeBehind to CodeFile.(没用,同样的错误)。
- 在网络服务器上,我们已确保该站点在目录浏览中启用(这似乎以某种方式切换,不知道为什么,但我们有时会收到 404 错误,告诉我们它已切换)。
- 在网络服务器上,我们已验证 IIS 正在使用直通身份验证,并且应用程序正在使用全局管理员进行访问并拥有所需的所有权限。
- 在网络服务器上,我们所有其他网站仍然 运行 正常。
- 我确定我忘记了一些我们尝试过的东西。
环境:
网络服务器:Server 2012 w/ IIS 8.5
开发箱:Windows 7 Pro 64 位,带 VS 2010 / 2017(本场景中未使用,但我们有)。
应用程序:ASP.NET 3.5,前端使用JavaScript、JQuery、AJAX,后端使用C# [WebMethod]s与MariaDB对话(MySQL).
*更新:
我的同事刚刚完成了 scrape-by-til-we-fix-it 网站,并且遇到了完全相同的解析器问题。所以现在他正在创建一个 WinForms 应用程序。
这让我相信存在比我们理解的更全球化的问题,但我们在同一个 IIS 服务器上的所有其他网站仍然 运行 很好,所以它不能在服务器范围内,否则它们不会'没用。
我们看到的实际错误:
Server Error in '/' Application.
Parser Error
Description: An error occurred during the parsing of a resource required to service this request. Please review the following specific parse error details and modify your source file appropriately.
Parser Error Message: Could not load type 'PCBIDRecord.Global'.
Source Error:
Line 1: <%@ Application Codebehind="Global.asax.cs" Inherits="PCBIDRecord.Global" Language="C#" %>
Source File: /global.asax Line: 1
Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.6.1087.0
堆栈跟踪:
Event code: 3006
Event message: A parser error has occurred.
Event time: 6/13/2017 4:38:10 PM
Event time (UTC): 6/13/2017 11:38:10 PM
Event ID: 7effc328553b424c8f6005608ed8f11b
Event sequence: 1
Event occurrence: 1
Event detail code: 0
Application information:
Application domain: /LM/W3SVC/1/ROOT-1-131418706905858364
Trust level: Full
Application Virtual Path: /
Application Path: C:\inetpub\wwwroot\PCBClient\
Machine name: [REDACTED]
Process information:
Process ID: 1316
Process name: w3wp.exe
Account name: IIS APPPOOL\PCBClient
Exception information:
Exception type: HttpException
Exception message: Could not load type 'PCBIDRecord.Global'.
at System.Web.Compilation.BuildManager.ReportTopLevelCompilationException()
at System.Web.Compilation.BuildManager.EnsureTopLevelFilesCompiled()
at System.Web.Compilation.BuildManager.CallAppInitializeMethod()
at System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters, PolicyLevel policyLevel, Exception appDomainCreationException)
Could not load type 'PCBIDRecord.Global'.
at System.Web.UI.TemplateParser.ParseString(String text, VirtualPath virtualPath, Encoding fileEncoding)
at System.Web.UI.TemplateParser.ParseFile(String physicalPath, VirtualPath virtualPath)
at System.Web.UI.TemplateParser.ParseInternal()
at System.Web.UI.TemplateParser.Parse()
at System.Web.Compilation.BaseTemplateBuildProvider.get_CodeCompilerType()
at System.Web.Compilation.BuildProvider.GetCompilerTypeFromBuildProvider(BuildProvider buildProvider)
at System.Web.Compilation.BuildProvidersCompiler.ProcessBuildProviders()
at System.Web.Compilation.BuildProvidersCompiler.PerformBuild()
at System.Web.Compilation.ApplicationBuildProvider.GetGlobalAsaxBuildResult(Boolean isPrecompiledApp)
at System.Web.Compilation.BuildManager.CompileGlobalAsax()
at System.Web.Compilation.BuildManager.EnsureTopLevelFilesCompiled()
Could not load type 'PCBIDRecord.Global'.
at System.Web.UI.TemplateParser.ProcessException(Exception ex)
at System.Web.UI.TemplateParser.ParseStringInternal(String text, Encoding fileEncoding)
at System.Web.UI.TemplateParser.ParseString(String text, VirtualPath virtualPath, Encoding fileEncoding)
Could not load type 'PCBIDRecord.Global'.
at System.Web.UI.TemplateParser.GetType(String typeName, Boolean ignoreCase, Boolean throwOnError)
at System.Web.UI.TemplateParser.ProcessInheritsAttribute(String baseTypeName, String codeFileBaseTypeName, String src, Assembly assembly)
at System.Web.UI.TemplateParser.PostProcessMainDirectiveAttributes(IDictionary parseData)
Request information:
Request URL: http://[REDACTED]/
Request path: /
User host address: [REDACTED]
User:
Is authenticated: False
Authentication Type:
Thread account name: IIS APPPOOL\PCBClient
Thread information:
Thread ID: 6
Thread account name: IIS APPPOOL\PCBClient
Is impersonating: False
Stack trace: at System.Web.Compilation.BuildManager.ReportTopLevelCompilationException()
at System.Web.Compilation.BuildManager.EnsureTopLevelFilesCompiled()
at System.Web.Compilation.BuildManager.CallAppInitializeMethod()
at System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters, PolicyLevel policyLevel, Exception appDomainCreationException)
Custom event details:
我终于能够弄清楚哪里出了问题。我们启动了一个旧的虚拟机,它有一个有问题的软件的工作副本,但上面没有其他网站。我们能够将我们的生产车间指向 VM,因此他们的工作不受阻碍。那么问题来了,让其他网站和虚拟机上的 运行 起来有多难?好吧,事实证明这并不太难,但是有几个挑战,特别是启用 32 位应用程序、设置默认页面和禁用表单身份验证。一旦我将这些设置与实时服务器上的设置相匹配,我就能够让新站点成功显示在 VM 上。因此,我使用几乎完全相同的设置向后解决了原始站点的问题,瞧,该站点开始运行了。
在上周的崩溃中,我知道我尝试了所有这些,但默认页面除外(我们到各个网站的快捷方式都有特定的页面名称,因此没有必要)。我想直到上周五我才尝试过正确的组合。
希望这能帮助其他人在处理解析器错误时添加更多尝试。
我为此焦急了两天。我已经通读并遵循了可能数十条 SO 建议,但我仍然收到解析器错误。
TL;DR:
我们尝试了很多方法来消除网站的解析器错误,但都无济于事。
历史:
昨天我们有一个功能完美的 ASP.NET / JavaScript / AJAX 网站,我们整个生产车间都使用该网站在整个组装过程中跟踪电路板。我对其进行了备份并部署了 UI 更改并开始出现错误。将备份副本复制到站点顶部,一切都很好(除了未部署更改)。我尝试了几次,每次都使用备份进行恢复。
一夜之间,我考虑只创建一个要部署到的测试站点,而不是像以前那样剪切和粘贴,我在 VS 2010 IDE 中使用 Web Publish 到 test site,它不起作用(它部署得很好,但有相同或相似的解析器错误)。
不过...
现在,无论我做什么,主生产站点由于某种原因坏了*,试图用备份替换站点不再有效,到目前为止我们已经花了一整天的时间来调试这个.我的同事目前正在旁边建立一个最低限度的网站,让我们的生产工人在我们解决这个问题时勉强过关。
我们尝试过的:
SO question, as well as this SO question, and this SO question 中的几乎所有建议。可能还有一些我们忘记了。
- 我们已经从网络服务器中删除了测试站点,因为这两个站点对 default.aspx 文件使用了完全相同的名称(不确定这是不是一个问题,但由于我们工厂车间使用的生产站点已被破坏,在我们启动生产站点之前不再需要测试站点。
- 我们删除了 \bin 和 \obj 目录并在我们的两个开发箱上重建,并确保“构建”选项卡中的输出路径设置为:bin\
- 该应用程序在我的 Dev Box 和我同事的盒子上的调试/发布中运行得很好。
- 我们已多次删除并重新创建 IIS 服务器上的网站。
- 我们创建了一个新网站并在那里部署(同样的问题)。
- 我们已经从 [Project] > Add > New Item > Global Application Class 中删除并重新创建了 Global.asax 文件。
- 我们已经重新编译了几十次,在重新编译之前和之后关闭并重新启动 IDE(我看不出这会有什么不同,但不止一次被建议)。
- 我们已尝试从不同的 IDE / 开发箱进行部署。
- 在网络服务器上,我们在 .NET 2.0 和 .NET 4.0 之间来回更改了应用程序池(我们开始时的位置)。
- 我们已经尝试重命名 CodeBehind to CodeFile.(没用,同样的错误)。
- 在网络服务器上,我们已确保该站点在目录浏览中启用(这似乎以某种方式切换,不知道为什么,但我们有时会收到 404 错误,告诉我们它已切换)。
- 在网络服务器上,我们已验证 IIS 正在使用直通身份验证,并且应用程序正在使用全局管理员进行访问并拥有所需的所有权限。
- 在网络服务器上,我们所有其他网站仍然 运行 正常。
- 我确定我忘记了一些我们尝试过的东西。
环境:
网络服务器:Server 2012 w/ IIS 8.5
开发箱:Windows 7 Pro 64 位,带 VS 2010 / 2017(本场景中未使用,但我们有)。
应用程序:ASP.NET 3.5,前端使用JavaScript、JQuery、AJAX,后端使用C# [WebMethod]s与MariaDB对话(MySQL).
*更新:
我的同事刚刚完成了 scrape-by-til-we-fix-it 网站,并且遇到了完全相同的解析器问题。所以现在他正在创建一个 WinForms 应用程序。
这让我相信存在比我们理解的更全球化的问题,但我们在同一个 IIS 服务器上的所有其他网站仍然 运行 很好,所以它不能在服务器范围内,否则它们不会'没用。
我们看到的实际错误:
Server Error in '/' Application.
Parser Error
Description: An error occurred during the parsing of a resource required to service this request. Please review the following specific parse error details and modify your source file appropriately.
Parser Error Message: Could not load type 'PCBIDRecord.Global'.
Source Error:
Line 1: <%@ Application Codebehind="Global.asax.cs" Inherits="PCBIDRecord.Global" Language="C#" %>
Source File: /global.asax Line: 1
Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.6.1087.0
堆栈跟踪:
Event code: 3006
Event message: A parser error has occurred.
Event time: 6/13/2017 4:38:10 PM
Event time (UTC): 6/13/2017 11:38:10 PM
Event ID: 7effc328553b424c8f6005608ed8f11b
Event sequence: 1
Event occurrence: 1
Event detail code: 0
Application information:
Application domain: /LM/W3SVC/1/ROOT-1-131418706905858364
Trust level: Full
Application Virtual Path: /
Application Path: C:\inetpub\wwwroot\PCBClient\
Machine name: [REDACTED]
Process information:
Process ID: 1316
Process name: w3wp.exe
Account name: IIS APPPOOL\PCBClient
Exception information:
Exception type: HttpException
Exception message: Could not load type 'PCBIDRecord.Global'.
at System.Web.Compilation.BuildManager.ReportTopLevelCompilationException()
at System.Web.Compilation.BuildManager.EnsureTopLevelFilesCompiled()
at System.Web.Compilation.BuildManager.CallAppInitializeMethod()
at System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters, PolicyLevel policyLevel, Exception appDomainCreationException)
Could not load type 'PCBIDRecord.Global'.
at System.Web.UI.TemplateParser.ParseString(String text, VirtualPath virtualPath, Encoding fileEncoding)
at System.Web.UI.TemplateParser.ParseFile(String physicalPath, VirtualPath virtualPath)
at System.Web.UI.TemplateParser.ParseInternal()
at System.Web.UI.TemplateParser.Parse()
at System.Web.Compilation.BaseTemplateBuildProvider.get_CodeCompilerType()
at System.Web.Compilation.BuildProvider.GetCompilerTypeFromBuildProvider(BuildProvider buildProvider)
at System.Web.Compilation.BuildProvidersCompiler.ProcessBuildProviders()
at System.Web.Compilation.BuildProvidersCompiler.PerformBuild()
at System.Web.Compilation.ApplicationBuildProvider.GetGlobalAsaxBuildResult(Boolean isPrecompiledApp)
at System.Web.Compilation.BuildManager.CompileGlobalAsax()
at System.Web.Compilation.BuildManager.EnsureTopLevelFilesCompiled()
Could not load type 'PCBIDRecord.Global'.
at System.Web.UI.TemplateParser.ProcessException(Exception ex)
at System.Web.UI.TemplateParser.ParseStringInternal(String text, Encoding fileEncoding)
at System.Web.UI.TemplateParser.ParseString(String text, VirtualPath virtualPath, Encoding fileEncoding)
Could not load type 'PCBIDRecord.Global'.
at System.Web.UI.TemplateParser.GetType(String typeName, Boolean ignoreCase, Boolean throwOnError)
at System.Web.UI.TemplateParser.ProcessInheritsAttribute(String baseTypeName, String codeFileBaseTypeName, String src, Assembly assembly)
at System.Web.UI.TemplateParser.PostProcessMainDirectiveAttributes(IDictionary parseData)
Request information:
Request URL: http://[REDACTED]/
Request path: /
User host address: [REDACTED]
User:
Is authenticated: False
Authentication Type:
Thread account name: IIS APPPOOL\PCBClient
Thread information:
Thread ID: 6
Thread account name: IIS APPPOOL\PCBClient
Is impersonating: False
Stack trace: at System.Web.Compilation.BuildManager.ReportTopLevelCompilationException()
at System.Web.Compilation.BuildManager.EnsureTopLevelFilesCompiled()
at System.Web.Compilation.BuildManager.CallAppInitializeMethod()
at System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters, PolicyLevel policyLevel, Exception appDomainCreationException)
Custom event details:
我终于能够弄清楚哪里出了问题。我们启动了一个旧的虚拟机,它有一个有问题的软件的工作副本,但上面没有其他网站。我们能够将我们的生产车间指向 VM,因此他们的工作不受阻碍。那么问题来了,让其他网站和虚拟机上的 运行 起来有多难?好吧,事实证明这并不太难,但是有几个挑战,特别是启用 32 位应用程序、设置默认页面和禁用表单身份验证。一旦我将这些设置与实时服务器上的设置相匹配,我就能够让新站点成功显示在 VM 上。因此,我使用几乎完全相同的设置向后解决了原始站点的问题,瞧,该站点开始运行了。
在上周的崩溃中,我知道我尝试了所有这些,但默认页面除外(我们到各个网站的快捷方式都有特定的页面名称,因此没有必要)。我想直到上周五我才尝试过正确的组合。
希望这能帮助其他人在处理解析器错误时添加更多尝试。