解析器错误消息: 无法加载“ TestMvcApplication.MvcApplication”类型

我在我们的一个生产服务器上得到以下错误。不知道为什么它在 DEV 服务器上工作?

解析器错误 说明: 在解析为此请求提供服务所需的资源时发生错误。请检查以下特定的解析错误详细信息并适当修改源文件。

解析器错误消息 : 无法加载类型“ TestMvcApplication.MvcApplication”。

来源错误 :

第1行: <%@Application Codebehind = “ Global.asax.cs”继承 = “ TestMvcApplication. MvcApplication”Language = “ C #”% >

源文件:/global.asax 行: 1

不知道以前是否有人遇到过这个错误,也不知道它是如何解决的,但是我已经走到了尽头。 如果你能帮忙,我将不胜感激。

我还需要提到的是,这是已发布的代码,因此所有代码都已编译。 我的编译器设置有问题吗?

196154 次浏览

我唯一一次遇到这种情况是在服务器上没有安装 MVC 框架的时候。是这样吗?

视图 Web.config 中缺少的 Pages 部分也可能是错误的。

经过长时间的努力,我在这里发现了真正的问题。

程序集被我用来将文件上传到宿主环境的 FTP 客户端损坏。

我更改了 FTP 客户端,一切正常。

几天前,我也遇到了同样的问题——据我所知,这是一个运行32位 Web 应用程序的64位 IIS 的问题。我们将生产服务器更改为32位,这个问题就消失了。

我有过好几次这样的经历。这尤其令人沮丧,因为它是正确的,并且错误消息没有任何线索可能是什么问题。

要解决这个问题,右键单击项目标题,在本例中为“ TestMvcApplication”,然后单击 建造

这将强制代码在运行之前进行编译。不要问我为什么,但这是解决100% 的时间对我来说。

我也有同样的问题: 我的问题是因为 Web 项目的平台目标是 x86。我在一台64位机器上运行; 解决方案中的其他项目被设置为64位。

若要检查设置,请右键单击该项目并选择“属性”。在 Build 选项卡上,检查“ Platform Target”的值。

还要检查解决方案的构建配置(Build menu > Configuration Manager) ,以检查所有项目都是在同一个平台上构建的。

在这两种情况下,请确保同时检查调试和发布模式的设置——否则您将让它在您的机器上工作,但不是在您部署它的时候!

我尝试了以上所有的解决方案,但没有运气。向 web.config 添加行 <add assembly="*" />为我修复了这个问题。(也可以添加到 machine.config 或根 web.config 文件中。NET 框架版本,我没有尝试过)感谢微软支持的解决方案。

没有其他的答案为我解决了这个错误。
我确实找到了一个有效的解决方案,我建议那些处于同样情况的人:

  1. 关闭 VisualStudio
  2. 浏览到 Projects yourProjectyourProject
  3. 重命名 Web.Debug.config 和 Web.Release.config
  4. 重新生成并运行应用程序

我有很多问题和错误需要解决,上面的一些答案对我有所帮助,但是最后一个让它对我有用的技巧是: 进入你的项目,点击属性。

转到 Package/PublishWeb 选项卡,确保配置设置为 ReleaseandPlatform to All Platform。

最后确保“要部署的项(适用于所有部署方法)”设置为“此项目文件夹中的所有文件”

这对我来说很有效。

我也犯了同样的错误。我尝试了许多网页的许多建议,结果发现问题是我把网站设置成了错误的版本。网

无论重新编译多少次,或者有多少人说“配置问题”,都没有人指出。网络版本需要检查。

我也犯了同样的错误,你的解决方案都没有帮助。我想我的问题只是我为这个项目选择的名字。我把我的项目命名为“接口”,当我遇到解析错误时,它说它无法加载:

第1行: <%@Application Codebehind = “ Global.asax.cs”继承 = “ @ interface.MvcApplication”Language = “ C #”% >

不知道为什么那里有个“@”的标志。我猜“接口”这个词是为其他东西保留的,它添加了@符号,但显然打破了某些东西。我删除了这个项目,并做了一个新的与不同的名称没有问题。

其他的答案对我都不管用。我通过改变 web 项目的输出路径来修正我的错误。我把它设置为 bin 调试,但是 web 项目不工作,除非输出路径设置为简单的“ bin”

我一直没有弄清楚到底是什么导致了这一切。我想我一定是在哪里遗失了一些文件。我在发布到一个新的服务器后得到了这个错误。最后,我从工作现场复制了该网站。然后站点工作了,并且向新服务器发布了更多的内容。

我发现,当你被迫使用配置管理器在 x86或其他任何标准项目“开箱即用”设置下运行时,IDE 会在 web 项目的 bin 文件夹下创建一堆子目录。

一旦发生这种情况,如果 Cassini 服务器正在运行,那么项目就不能正常运行。

我通过进入 Web 项目属性-> 构建设置并将输出路径更改为 bin 来修复它

然后重建,一切按计划进行。

当我重命名我的项目/解决方案时会发生这种情况。 进入文件资源管理器中的项目文件夹(退出 VS)。 找到并打开文件全局(也许你会找到2个文件,打开没有”。(asax.cs 扩展名) ,并使用正确的路径编辑错误行。 祝你好运!

这个问题很复杂,因为很容易混淆根本原因和任何直接原因。

在我的案例中,直接原因是解决方案被配置为使用 NuGet Package Restore,但是服务器没有连接到互联网,所以 NuGet 在第一次构建时无法下载依赖项。

我认为根本原因很简单,就是解决方案无法正确地解决依赖关系。它可能是不正确的路径配置,或程序集的错误版本,或冲突程序集,或部分部署。但是在所有情况下,错误只是说它无法找到 global.asax 中指定的类型,因为它无法构建它。

遵循以下步骤:

  1. 建造
  2. 配置管理器
  3. 将 AnyCPU 项目
  4. 返回生成
  5. 准备好了,然后按照相同的步骤将它传递给 x86或 x64

为了完整起见,我列出了我的问题是什么以及我是如何解决它的:

如果你像我一样,通过 web.config 有 httphandlers,并且你有来自 global.asax.cs (可能在 Session _ Start ())的重定向,就像我的情况一样,如果你的启动项目没有定义一个引用来指向 httphandler 所指向的目标,你就会得到这个错误!(但是不会出现构建错误,只会出现运行时错误)

所以:

  1. 再次检查 web.config 中的任何外部项
  2. 仔细检查你的启动项目有它所需要的所有参考资料。

干杯。

对我来说,我有一个 DLL 包含在我的项目,必须在32位环境中运行。

服务器被配置为以32位模式运行网站,但我无法在64位机器上运行应用程序,因为没有指定 localhost文件夹以32位模式运行。

对我来说,这是因为我暂时排除了该项目的文件。我只是把它放回到项目中,然后它就起作用了。

确保 Global.asax文件中的命名空间与 Global.cs文件中的命名空间相匹配,即。

Global.asax: Some.Website.Webapplication

Cs: Some.Website(减去“ WebApplication”)

我也有过类似的问题。

原因是我正在更改一个 file.aspx.c 文件,必须进行一次干净的重新构建。

在我的案例参考系统。Web.MVC 从我的项目中消失了。但在添加引用问题是相同的,所以我检查属性,我的斌文件夹它是只读。只要把它写下来,一切都会好起来的。

我的问题是,我试图在一个已经有 web.config 文件的文件夹的子文件夹中创建一个 ASPX web 应用程序

所以我在 Visual Studio 中打开父文件夹作为网站(Open > Web Site) ,我能够添加一个新的项目 ASPX 页面,没有解析/加载问题。

对我来说,问题只出在网站内的某些(长)链接上,并且被追踪到 URL Scan,它的默认配置是 URL 长度限制为260。

我也有同样的问题。 尝试:

右键单击该项目并选择 Clean,然后再次右键单击该项目并选择 Rebuild 并运行该项目以查看是否有效。

还有一个:

  1. 我一直在做一个使用 localhost: 12345的 web api 项目。
  2. 我从源代码控制中检出了一个包含相同项目的不同分支。
  3. 我在分支上运行了这个项目并得到了错误。
  4. 我点击“ Properties > Web > Project Url”,然后点击“ Create Virtual Directory”
  5. 出现一个对话框,告诉我 URL 被映射到另一个目录(原始项目的目录)。
  6. 我点击 OK,虚拟目录被重新映射。
  7. 错误消失了。

我希望这对某些人有所帮助:)

我得到了错误,因为我部署的应用程序作为一个虚拟目录,我是得到解析器错误“不能加载类型”,然后我部署的应用程序作为一个网站,我没有得到这个错误。

确保 Web 项目属性中的默认名称空间与 Global.asax.cs 中的名称空间相同。我已经修改了默认的名称空间,使其成为一个子名称空间,将其修改回来为我解决了这个问题。

如果 Andy Copley 的回答对你有用,但是简单地重新构建解决方案不起作用,那么去 Project | Project Dependences,确保包含 Global.asax.cs 文件的项目依赖于解决方案中所有其他非测试项目。

我通过重命名很多东西来解决我的问题。 如果您的问题是由复制现有项目(如我)创建新项目引起的,您可以尝试以下步骤。

  1. 重命名解决方案-在解决方案资源管理器
  2. 重命名 project-in 解决方案资源管理器
  3. 在代码中重命名命名空间
  4. 重命名程序集名称和默认命名空间-在 project > property > application 中
  5. 重命名 AssemblyTitle 并更新 GUID-in project > property > application > Assembly information
  6. 重建然后逃跑

这些步骤中的一些可能是没有价值的,但是遵循所有这些步骤应该可以解决你的问题。

花了近2个小时后,我解决了这个问题,只需删除一行。 csproj 文件。

   <PlatformTarget>AnyCPU</PlatformTarget>

当我在 IIS 中将包含文件的物理文件夹转换为应用程序时,问题就解决了。右击 > 转换为应用程序。

我在尝试向工作流服务添加服务引用时出现了这个错误。最后我不得不把它添加到我的 web.config 中。

Http://blogs.msdn.com/b/rjacobs/archive/2011/12/16/how-to-enable-service-metadata-for-workflow-services.aspx

如您所见,我在 Final Entity Framework 标记之后和最终配置标记之前添加了它。

</entityFramework>
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_IService" />
</basicHttpBinding>
</bindings>
<client>
<endpoint address="http://localhost:8006/Sample/Service1.xamlx"
binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IService"
contract="ServiceReference1.IService" name="BasicHttpBinding_IService" />
</client>
<behaviors>
<serviceBehaviors>
<behavior name="">
<serviceMetadata httpGetEnabled="True"/>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>

我解决这个问题的方法是将我的项目属性从 Web > > Special port > > 55555切换到自动分配端口

我也遇到过同样的问题,不知为何 IIS Express 的配置文件没有指向网站的正确 bin 目录。因此编辑 Document/IISExpress/Config 中的 Config 文件就解决了这个问题。只需指向 Site 标记中的正确物理路径,如下所示。

     <site name="MYWEBSITE" id="4">
<application path="/" applicationPool="Clr4IntegratedAppPool">
<virtualDirectory path="/" physicalPath="D:\MYWEBSITE" />
</application>
<bindings>
<binding protocol="https" bindingInformation="*:44305:localhost" />
<binding protocol="http" bindingInformation="*:6689:localhost" />
</bindings>
</site>

确保所有您自己引用的 dls 在“属性”窗口中都将“ CopyLocal”设置为 True,除非它们在 GAC 中。没有必要对框架 dls 这样做。

以上大部分答案我都试过了,但都没有用。出于某种原因,只是关闭和重新打开 VS 为我解决了这个问题。

在右键单击并从 Web API 2解决方案中排除 global.asax 之后,我收到了解析器错误。

事实证明,不仅仅是排除它,你还必须右键单击并删除它。

删除之后,我不再得到解析器错误。

在德夫服务器- 在解决方案平台中使用 中央处理器并重新生成。 请参考此截图。 AnyCPU