无法加载类型“XXX.Global”。

62

将一个项目从ASP.NET 1.1迁移到ASP.NET 2.0时,我不断遇到这个错误。

实际上我并不需要Global,因为我没有往其中添加任何内容,但是当我将它移除后,就会出现更多的错误。


可能是["Parser Error Message: Could not load type" in Global.asax]的重复问题(https://dev59.com/jmgt5IYBdhLWcg3w-SFM)。 - Michael Freidgeim
18个回答

85
我遇到这个问题的原因是因为我更改了构建配置。 当我将 Web 项目设置为 x86 时,它会将输出路径更改为 bin\x86\Debug。然而,输出路径应该是 bin,由于这样,Web 服务器无法找到二进制文件。
因此,解决方案是在更改构建配置后将网站的输出路径更改回 bin

29
这可能是Stack Overflow上提供的最好的答案。单凭言语难以表达我对这个非常有帮助、措辞精细的答案的感激之情。当这个答案被阅读并成功应用时,欢呼声在半个世界的距离内响起,给人带来了真正的宽慰。一杯冰啤酒已经为我们亲爱的导师Pieter准备好了。祝愿您先生能过上非常长寿而快乐的生活。绝对是一次非常出色的贡献。太棒了。谢谢。 - rism
6
谢谢。新西兰对我来说有点远,但如果我在附近,我会去看看的。 - Pieter van Ginkel
我想对这个非常出色的答案表示祝贺。 - Rob
哦,我自己永远找不到那个...谢谢! - Erikest
我 echo rism 的评论。谢谢。 - B4ndt
1
我们的问题是安装项目的主要输出指向了一个“bin”文件夹,因此它编译的dll最终出现在\site\bin\bin中。虽然根本原因不同,但结果相同。奇怪的是,ProcMon或融合日志中没有任何内容指向了导致问题的原因。 - Pedro

57

有几件事情可以尝试,看起来经常发生问题,但解决方案似乎因人而异。

  • 如果您仍在使用IIS虚拟目录,请确保其指向正确的目录,并检查设置的ASP.NET版本,确保设置为ASP.NET 2.0。

  • 清除bin/debug/obj中的所有内容。进行清理解决方案(Clean solution)生成解决方案(Build Solution)

  • 在文本编辑器中检查项目文件,确保其寻找全局文件的位置正确,有时它不会更改目录。

  • 从解决方案中删除全局文件,并在保存和关闭后重新添加它。确保ASPX文件中的所有脚本标签指向正确的文件。

  • 您可以尝试运行转换为Web应用程序工具,它会重新处理所有代码和项目文件。

  • IIS Express正在使用错误的根目录(请参见VS 2012启动基于错误路径的应用程序中的答案)

尝试完这些方法后,请确保关闭Visual Studio。

以上是我知道的一些尝试方法,希望其中一个对您有用。


1
是的,我随着时间的推移使用了它们,其中一个通常会解决问题。 - pete blair
1
删除并重新添加Global.asax对我很有帮助。 - East of Nowhere
我的 Bin 和 Obj 文件夹被从项目中排除了...只需在解决方案资源管理器中使用“显示所有文件”按钮,然后右键单击并包含这些文件夹即可。谢谢。 - kad81
3
@kad81建议将Bin和Obj文件夹保持在项目之外。请注意,这里的“应该”代表建议或推荐。 - Bora
+1,这个方法在2017年仍然有效。我不得不删除global.asax和global.asax.cs文件,保存并关闭Visual Studio,重新打开解决方案,清理解决方案,然后构建和运行它。一切都恢复正常了! - Lews Therin
显示剩余2条评论

5

我发现当Global.asax.(vb|cs)没有正确转换为部分类时,会出现这种情况。

最快的解决方法是在类名“Global”周围加上 [方括号],就像这样(在VB.Net中):

Public Class [Global]
    Inherits System.Web.HttpApplication
    ...

我在其他地方也看到过这个问题,但我的代码没有出现部分失效的情况,它们都能正常工作。 - Nelson Rothermel

5

删除现有的global.asax文件并添加一个新的,可以清除此错误。这种方法对我来说已经有效多次。


谢谢。你的提示为我节省了很多时间。 - Yan Yankowski

3
如果您使用Visual Studio 2010,当您更改配置部署类型时,可能会出现此错误。这三种类型是x86、x64和混合模式。将解决方案中所有项目的设置更改为混合模式应该可以解决问题。不要忘记删除bin、Lib文件,并在ASP.NET网站上更改临时目录输出。

2
更改地址的端口号(localhost:)对我有用 :)

请不要将“谢谢”作为答案。相反,投票支持您认为有帮助的答案。 - Sachin Chavan
抱歉:我还没有50个声望值,无法在别人的帖子下发表评论。 - rebulanyum

2

我通过简单地从Debug切换到Release,启动程序(在Release上运行),然后切换回Debug来解决了这个错误。

我尝试了几乎所有其他方法,包括重新启动Visual Studio,但都没有起作用。


2

我刚遇到了同样的问题,在尝试了其他所有方法后,我偶然发现错误消息中提到的应用程序池设置为 .Net 1.1。我升级了应用程序到2.0版本,转换为Web应用程序,但从未更改应用程序池:

版本信息: Microsoft .NET Framework Version:1.1.4322.2490; ASP.NET Version:1.1.4322.2494


2
这个问题让我完全崩溃了,我找不到任何有用的东西来解决它。这可能不是大多数人遇到这个问题的原因,但我希望其他人能从这个答案中受益。
导致我的问题的原因是在配置部分中使用了语句。我添加了这个语句,因为在生产环境中,由于同一托管计划中存在多个不相关的应用程序,我不希望它们中的任何一个受到其他应用程序的影响。更正确的解决方案应该是在发布时只使用web.config转换。
希望这可以帮助其他人!

1
在我的情况下,项目中的一个 AfterBuild 目标用于编译 Web 应用程序是此错误的原因。
请参见此处获取更多信息。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接