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


152

我在一台生产服务器上收到以下错误。不确定为什么它可以在DEV服务器上运行吗?

解析器错误 说明:解析服务此请求所需的资源期间发生错误。请查看以下特定的解析错误详细信息,并适当地修改您的源文件。

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

源错误

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

源文件:/global.asax行:1

不知道之前是否有人遇到过该错误以及如何解决该错误,但是我已经结束了。任何帮助,将不胜感激。

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



15
退出Visual Studio并重新为我修复它。
RickAndMSFT

删除global.asax文件并添加一个新文件,一切都会好起来的。
DotNetGeek

部署以前可以正常工作的应用程序时,这发生在我身上。IIS(7)中的某些东西进入了坏状态。重置IIS可解决此问题。
BurnsBA '16

Answers:


169

没有其他答案对我有用。我通过更改Web项目的输出路径来修复错误。我已经将其设置为bin \ debug,但是除非将输出路径设置为简单的“ bin”,否则Web项目将无法正常工作


这是我的问题,这让我非常难过,因为这里没有其他解决方案对我
Zack

3
+1这也是我的问题。错误消息和有关此问题的帮助基本上是不存在的。谢谢。
Noldorin 2012年

4
对我来说,bin \给出了错误,我将其更改为bin。而且有效。
Nanu

1
对我来说,问题在于我不小心选择了x86作为活动平台,并且对于此配置,项目设置错误(Bin \ Debug \ x86)。改回任何CPU即可解决此问题。但是更改输出路径也可以。
拉尔斯·乌登加德

13
因此,将输出路径从bin \ Debug \更改为bin可以为我消除错误。但是真正的问题是:“为什么bin \ Debug首先不起作用?” 构建调试或发布配置时,我希望在相应的bin目录中生成文件。
Ellesedil 2015年

96

我已经有几次了。尤其令人沮丧的是,它马上就可以使用,并且错误消息并不暗示可能是什么问题。

要解决此问题,请右键单击您的项目标题(在本例中为“ TestMvcApplication”),然后单击build

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


4
我也+1。我尝试了许多事情,“事物”是指“疯狂的猜测”。好答案!
Bob Kaufman

就我而言,我的IIS指向一个以前未构建的MVC站点。h 显然,构建它可以解决该问题。
Edgar

5
更改项目名称时,我也收到此错误,但是忘记更改global.asax.cs使用的名称空间。
昂贵的2012年

1
您既是绅士又是先生,甚至没有想到要在此基础上进行建设。谢谢!
本·布莱克

2
就我而言,由于某些原因,我的项目未设置为在解决方案配置属性中构建:i.imgur.com/kp73sGQ.png
马修·洛克

24

我发现,当您被迫使用Configuration Manager在x86或标准项目的“开箱即用”设置下运行时,IDE会在Web项目的bin文件夹下创建一堆子目录。

一旦开始发生这种情况,如果Cassini服务器正在运行,则该项目将无法正常运行。

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

然后重建,一切正常。


宾果游戏,这也是对我有用的解决方案。谢谢!
moshjeier 2012年

也为我工作-这不是错误吗?
马特·威尔科

并检查是否复选框被选中的构建
丹尼尔Bişar

如果您是因为我要给您买10杯啤酒而来过俄亥俄州,那么3个小时以来一直在寻找不同的建议
Andrew Afternoon-Delight Hayde


9

我遇到了同样的问题:我的原因是因为Web项目的平台目标是x86。我在64位计算机上运行;解决方案中的其他项目均设置为64位。

要检查设置,请右键单击该项目,然后选择“属性”。在“生成”选项卡上,检查“平台目标”的值。

还要检查解决方案的构建配置(“构建”菜单>“配置管理器”),以检查所有项目都在同一平台上构建。

在这两种情况下,请确保同时检查调试模式和发布模式的设置-否则,它将在您的计算机上正常工作,但在部署时无法正常工作!


我被要求将此答案与以下@brockstaylor的答案结合起来,以解决Umbraco 7.1.6上的此问题
devinbost 2014年

9

我尝试了所有上述解决方案,但没有运气。添加行<add assembly="*" />到web.config修复了对我来说。(您也可以将它添加到相应.NET Framework版本的machine.config或根web.config文件中,我没有尝试过)感谢MS支持提供解决方案。


这是我的问题。我必须<assemblies><clear/>...防止从嵌套IIS应用程序中的父应用程序继承程序集引用。
Craig Celeste

我从来不需要这个..比起突然,我在我的一台开发机器中遇到了这个问题。不知道它为什么开始,但是这是解决它的唯一原因
Pascal

9

我遇到了同样的错误。我尝试了很多页面上的许多建议,才发现问题是我将网站设置为错误的.Net版本。

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


8

当我重命名项目/解决方案时,IT就会发生。转到Windows资源管理器中的项目文件夹(退出VS)。查找并打开文件Global(也许您会找到2个文件,打开不具有“ .asax.cs”扩展名的文件),然后使用正确的路径编辑错误行。祝好运!


这是一个很好的答案,应该更多地建议-发生应用程序重命名,并且这样的错误很烦人!
巴托斯


5

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


4

为了完善起见,我列出了问题所在以及解决方法:

如果您像我一样,并且通过web.config拥有httphandlers,并且已经从global.asax.cs重定向(可能在Session_Start()中),例如在我的情况下,如果启动项目没有定义指向以下内容的引用,则会出现此错误您的httphandler指向的目标!(但是您不会得到构建错误,只会遇到运行时错误)

所以:

  1. 仔细检查您的web.config中是否有任何外部项目
  2. 仔细检查您的启动项目是否具有所需的所有引用。

干杯。


我添加了一个Ajax Toolkit控件,但没有添加对DLL的引用。感谢您的#2。
pixelmeow

4

我仅有的一次经历是在服务器上未安装MVC框架时。可能是这样吗?

Views \ Web.config中缺少页面部分也可能是错误的。


不确定,它是托管服务器,根据他们的说法,ASP .NET MVC可以正常工作。
Riaan Engelbrecht

我发现另一个人(与Google叔叔一起)由于不同的原因而遇到了类似的错误。添加了答案链接。祝好运!
Daniel Elliott

3

我遇到了同样的错误,您的解决方案均无济于事。我认为我的问题仅仅是我为该项目选择的名称。我已将项目命名为“接口”,当我收到解析错误时,它说它无法加载:

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

由于某种原因出现“ @”符号的地方。我猜想'interface'这个词是为别的东西保留的,它添加了@符号,但是显然破坏了某些东西。我删除了该项目,并使用其他名称成功地创建了一个新项目。


3

这是另一个:

  1. 我一直在使用localhost:12345的Web api项目中工作。
  2. 我从包含相同项目的源代码管理中签出了另一个分支。
  3. 我在分支上运行该项目,并得到了错误。
  4. 我转到“属性> Web>项目网址”,然后单击“创建虚拟目录”
  5. 出现一个对话框,告诉我该URL已映射到另一个目录(原始项目的目录)。
  6. 我单击确定,并且虚拟目录被重新映射。
  7. 错误消失了。

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


实际上为我做到了!
2015年

2

我有很多问题和错误要解决,上面的一些答案对我有帮助,但是使它对我有用的最终技巧是:转到项目,单击属性。

转到“打包/发布Web”选项卡,并确保将配置设置为“发行”和“平台到所有平台”。

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

然后对我来说很好。


2

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

在我的情况下,直接原因是解决方案配置为使用NuGet软件包还原,但是服务器未连接到Internet,因此NuGet首次构建时无法下载依赖项。

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


2

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

Global.asax: Some.Website.Webapplication

Global.cs :(Some.Website减去“ WebApplication”)


2

我尝试了以上大多数答案,但它们没有起作用。由于某种原因,仅关闭然后重新打开VS就可以解决我的问题。


2

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


1

对我来说,这是因为我暂时将文件从项目中排除了。我只是将其包含在项目的后面,然后它起作用了。


太矿,解决方案文件已经删除了一些文件,我不知道,直到我关闭并重新打开Visual Studio中
菲奥娜- myaccessible.website

1

就我而言,我的项目中缺少System.Web.MVC的引用。但是添加引用后,问题是相同的,所以我检查Bin文件夹的属性是ReadOnly。使其可写后,一切正常。


1

我收到错误消息是因为我将应用程序部署为虚拟目录,并且得到了解析器错误“无法加载类型”,然后我将应用程序部署为网站,而我再也没有收到该错误。


0

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

  1. 关闭Visual Studio
  2. 浏览到Projects \ yourProject \ yourProject
  3. 重命名Web.Debug.config和Web.Release.config
  4. 重建并运行您的应用程序

删除了这些...现在它们不再出现。
FiringSquadWitness 2014年

0

我从来没有真正了解过导致我的原因的原因。我认为我一定在某个地方丢失了一些文件。发布到新服务器后出现错误。最终,我从工作站点复制了该站点。然后,该站点开始工作,并且进一步将其发布到新服务器。


0

跟着这些步骤:

  1. 建立
  2. 配置管理器
  3. 放入AnyCPU项目
  4. 返回生成
  5. 准备好之后,只需按照相同的步骤将其传递给x86或x64

0

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

服务器配置为以32位模式运行网站,但是由于localhost未指定文件夹以32位模式运行,因此无法在64位计算机上运行该应用程序。



0

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

因此,我在Visual Studio中以网站的形式打开了父文件夹(“打开”>“网站”),从而能够添加一个新的ASPX页面,该页面没有解析/加载问题。


0

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


0

我有同样的问题。尝试:

右键单击该项目,然后选择“清理”,然后再次右键单击它,然后选择“重建并运行该项目,以查看其是否有效”。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.