我一直在扯掉头发两天左右。我已经阅读并且可能会遵循几十条SO建议,而且我仍然会收到解析器错误。
TL; DR:
我们已经尝试了很多东西来摆脱我们的解析器错误网站无济于事。
历史:
昨天我们有一个功能完善的ASP.NET / JavaScript / AJAX网站,我们的整个生产车间用于通过装配过程跟踪电路板。我对它进行了备份并部署了UI更改并开始出错。在站点顶部复制备份副本,一切都很顺利(除了没有部署更改)。我试了好几次,每次都用备份恢复。
一夜之间,我想到了创建一个部署到的测试站点,而不是切割和切换。像以前一样粘贴,我在VS 2010 IDE中使用了Web Publish到测试站点,它没有用(它部署得很好,但是相同或类似的解析器错误)。
然而... 的
现在,无论我做什么,主要的生产网站由于某种原因而被破坏*,尝试用备份替换网站不再有效,到目前为止我们花了整整一天试图调试它。我的同事目前正在建立一个最小的站点,以便让我们的生产工人在我们解决这个问题的过程中抓紧。
我们尝试了什么:
此SO question,as well as this SO question和此SO question中的每个建议都是如此。可能还有一些我们已经忘记了。
环境:
WebServer:Server 2012 w / IIS 8.5
开发框:Windows 7 Pro 64位,带VS 2010/2017(在这种情况下没有使用,但我们有。)
应用程序:ASP.NET 3.5,在前端使用JavaScript,JQuery,AJAX,后端的C#[WebMethod]与MariaDB(MySQL)交谈。
*更新:
我的同事刚刚完成了scilt-by-to-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:
答案 0 :(得分:0)
我终于能够弄清楚出了什么问题。我们创建了一个旧VM,其中包含相关软件的工作副本,但没有其他网站。我们能够将我们的生产车间指向VM,以便他们的工作畅通无阻。然后问题就出现了,让其他网站在VM上运行起来有多困难?好吧,事实证明并不太困难,但有几个挑战,特别是启用32位应用程序,设置默认页面和禁用表单身份验证。一旦我将这些设置与实时服务器上的设置相匹配,我就能够让新网站在VM上成功显示。所以,我使用几乎完全正确的设置向后解决了原始网站的问题,瞧,该网站开始工作。
在上周的整个崩溃期间,我知道我尝试了所有这些,除了默认页面(我们对各个网站的捷径都有特定的页面名称,因此没有必要)。我猜我直到上周五都没试过正确的组合。
希望这可以帮助其他人在处理解析器错误时添加另外一堆东西来尝试。