分析器错误无法加载类型[命名空间]。全局

时间:2017-06-13 21:51:36

标签: c# asp.net iis-8

我一直在扯掉头发两天左右。我已经阅读并且可能会遵循几十条SO建议,而且我仍然会收到解析器错误。

TL; DR:

我们已经尝试了很多东西来摆脱我们的解析器错误网站无济于事。

历史:

昨天我们有一个功能完善的ASP.NET / JavaScript / AJAX网站,我们的整个生产车间用于通过装配过程跟踪电路板。我对它进行了备份并部署了UI更改并开始出错。在站点顶部复制备份副本,一切都很顺利(除了没有部署更改)。我试了好几次,每次都用备份恢复。

一夜之间,我想到了创建一个部署到的测试站点,而不是切割和切换。像以前一样粘贴,我在VS 2010 IDE中使用了Web Publish到测试站点,它没有用(它部署得很好,但是相同或类似的解析器错误)。

然而...

现在,无论我做什么,主要的生产网站由于某种原因而被破坏*,尝试用备份替换网站不再有效,到目前为止我们花了整整一天试图调试它。我的同事目前正在建立一个最小的站点,以便让我们的生产工人在我们解决这个问题的过程中抓紧。

我们尝试了什么:

SO questionas well as this SO question和此SO question中的每个建议都是如此。可能还有一些我们已经忘记了。

  • 我们已经从网络服务器上删除了测试网站,因为这两个网站都使用了default.aspx文件的完全相同的名称(不确定这是一个问题,但由于我们工厂车间使用的生产网站已被修复,因此不再需要测试站点,直到我们可以获得生产站点。)
  • 我们删除了\ bin& \ obj目录&在我们的开发盒上重建,并确保Build选项卡中的输出路径设置为:bin \
  • 应用程序在我的开发盒和我同事的盒子上的调试/发布中运行得很好。
  • 我们已多次删除并重新创建IIS服务器上的网站。
  • 我们创建了一个新的网站&部署在那里(同样的问题)。
  • 我们已从[Project]>中删除并重新创建了Global.asax文件。添加>新商品>我们的开发盒上的全局应用程序类。
  • 我们已经重新编译了几十次,关闭了&在&之前重新启动IDE重新编译之后(我看不出这会有什么不同,但是不止一次建议)。
  • 我们尝试从其他IDE / dev框进行部署。
  • 在网络服务器上,我们已将应用程序池更改为&介于.NET 2.0和之间.NET 4.0(我们开始的时候)。
  • 我们尝试重命名CodeBehind to CodeFile.(不起作用,同样的错误)。
  • 在网络服务器上,我们确保在目录浏览中启用了该网站(这似乎以某种方式切换,不确定原因,但我们有时会收到404错误,告诉我们它已切换)。
  • 在网络服务器上,我们已经确认IIS正在使用传递身份验证,并且该应用程序正在使用全局管理员进行访问,并具有所需的所有权限。
  • 在网络服务器上,我们所有其他网站仍然正常运行。
  • 我确定我忘记了一些我们尝试过的事情。

环境:

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: 

1 个答案:

答案 0 :(得分:0)

我终于能够弄清楚出了什么问题。我们创建了一个旧VM,其中包含相关软件的工作副本,但没有其他网站。我们能够将我们的生产车间指向VM,以便他们的工作畅通无阻。然后问题就出现了,让其他网站在VM上运行起来有多困难?好吧,事实证明并不太困难,但有几个挑战,特别是启用32位应用程序,设置默认页面和禁用表单身份验证。一旦我将这些设置与实时服务器上的设置相匹配,我就能够让新网站在VM上成功显示。所以,我使用几乎完全正确的设置向后解决了原始网站的问题,瞧,该网站开始工作。

在上周的整个崩溃期间,我知道我尝试了所有这些,除了默认页面(我们对各个网站的捷径都有特定的页面名称,因此没有必要)。我猜我直到上周五都没试过正确的组合。

希望这可以帮助其他人在处理解析器错误时添加另外一堆东西来尝试。