解析器错误信息:无法加载类型;在Global.asax

我在一个MVC3项目上工作,收到以下错误:

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

源错误:

第1行:<%@ Application Codebehind="Global.asax.cs" Inherits="GodsCreationTaxidermy.Core.MvcApplication" Language="C#" %>

我得到的错误是无法加载GodsCreationTaxidermy.Core.MvcApplication,但在这个屏幕截图中,核心部分没有显示在错误中:

错误页面截图

有人对这个错误有什么想法或解决方案吗?

298065 次浏览

尝试修改全局变量。Asax文件(简单添加一个空格的地方),并重新运行。这将迫使内置的web服务器刷新和重新编译全局。asax文件。

也做一个清理和重建-应该修复问题

您的本地web服务器运行的代码与您实际使用的代码不同。确保你已经停止调试,停止你的本地web服务器,按照Peter的建议清理和重建,仔细检查你的全局。Asax和global.asax.cs,再试一次。

如果这不起作用,并且您使用的是本地IIS,请尝试在IIS管理器中删除站点并手动重新创建它。

检查项目输出路径(项目属性/构建)设置为bin bin\Releasebin\Debug

由于某些原因,IIS (VS开发服务器或本地IIS)总是从bin目录访问库(并且不会查找子目录)

您还可以在IIS中检查站点的属性。(在IIS中,右键单击站点,选择“属性”。)确保物理路径设置指向您的应用程序的正确路径,而不是其他应用程序。(这为我解决了这个错误。)

这个问题,我解决了给文件夹的正确权限,以及从IIS检查。

当我在本地环境中测试时,我得到了每个人的许可。但是在发布模式下,我认为我们只允许ASP。网用户。

我也得到了同样的错误…检查您正确开发的应用程序的名称。分配的名称空间和程序集名称,并尝试物理地更改为应用程序创建的文件夹名称,所有这些都应该与文件global.asax中出现的上述名称空间中的名称相同

清空bin文件夹。构建所有依赖类库并在主项目中引用它们,然后构建完整的解决方案。

Source .

我也得到了同样的错误…检查您的虚拟目录的IIS配置,并确保属性- ASP。Net - asp。NET版本与项目属性-应用程序-目标框架相同。(这为我解决了这个错误。)

我的应用程序是在VS的旧版本中构建的,并且没有bin文件夹。我已经将它升级到一个更新的版本,但是在部署它时遇到了一个噩梦。我终于追踪到这个错误的项目>属性>应用程序。目标框架设置为2.0;在服务器上更改它以匹配IIS管理器/应用程序池,为我解决了这个问题。

我关闭和重开了视觉工作室,它工作。

如果在生成global.asax之后更改名称空间信息(项目或类级别),有时会发生这种情况。

右键单击Global.asax文件,选择“打开方式”,然后选择“带有编码的XML(文本)编辑器”(其他编辑器也可以工作,但这是我使用的)。

然后编辑XML指令中的“Inherits”部分

应用程序代码背后="Global.asax.cs" 继承= " GodsCreationTaxidermy。MvcApplication”语言=" c# " %>)

以便它与应用程序类的实际全名相匹配。就是这样。

另一种选择是从Global.asax.cs中复制所有代码,然后删除并创建另一个Global。asax文件(然后将代码复制回Global.asax.cs)。

我发现在项目中更改命名空间,而没有在整个解决方案中重构它是我的问题。检查你的项目属性,看看你的命名空间是什么,确保排列整齐,全面。

我不得不去BUILD ->配置管理器,然后——咳咳——勾选我的项目旁边的复选框,以确保它实际上得到了构建。

我只是在一个MVC5应用程序上遇到了这个问题,没有什么对我有用。这发生在我试图将SVN还原到项目的旧版本之后。

我必须删除 Global. asax.cs,然后通过右键单击项目->添加新项目-> Global添加一个新的项目。asax和THAT最终解决了它。

只是觉得也许能帮到别人。

我不得不说,我尝试了这篇文章中的至少4条建议。没有一个成功。然而,我很高兴地告诉大家,我从备份中恢复过来了。只需要更新日志文件中最后的代码更改。花了不到10分钟。花了3倍的时间阅读这篇文章并尝试其他建议。对不起。

这是一个非常奇怪的错误。祝其他遇到这个小妖精的人好运。

我的问题是我没有在我的项目中包含global.asax.cs。因为我是从。net 4.5复制文件到4.0,所以我没有注释掉4.0中不需要的行。因为它不包括visual studio编译它无论如何没有问题。但是当我加入它时,它突出显示了导致问题的行。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
//using System.Web.Http;
using System.Web.Mvc;
//using System.Web.Optimization;
using System.Web.Routing;


namespace YourNameSpace
{
public class WebApiApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
//GlobalConfiguration.Configure(WebApiConfig.Register);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
//BundleConfig.RegisterBundles(BundleTable.Bundles);
}
}
}

我有同样的问题,当我有2个实例的Visual Studio运行相同的项目。所以我关闭了两个Visual Studio,只打开了一个实例,它现在工作得很好!

我也面临着同样的问题。尽管遵循每一个答案,它没有工作。 然后我将“Inherits=namespace.class”更改为“Inherits=完全限定组装名”,即“Inherits=name .class,assemblyname, Version=, Culture=, PublicKeyToken=

我正在开发一个旧的“基于文件夹的”ASP。NET web项目(我讨厌)-并发现这是我的修复:

创建一个App_Code文件夹(如果你还没有的话)

Global.asax.vb文件移动到App_Code文件夹中

全局中的标记。Asax可以省略任何名称空间(至少对于这种类型的项目):

<%@ Application Codebehind="Global.asax.vb" Inherits="MyApp" Language="VB" %>

...其中“MyApp”是在Global.asax.vb中定义的类的名称

我花了整整一天的时间来解决这个问题。

唯一有效的方法是删除.sln文件,创建一个新文件,然后将项目一个一个地添加回去。

¯\_()_/¯-编程-¯\_()_/¯

不能加载错误与您的项目 firstly Fix your errors and after rebuild project its working < / >强

对于我来说,web组装是GAC的一部分……因此,在构建后,它需要安装在GAC和它工作。

我遇到了这个错误消息,最终发现这个错误消息具有误导性。在我的情况下,似乎已经在IIS路由问题,导致全局。从web服务器上的另一个站点读取Asax,从而产生错误。

在IIS中,我的站点绑定到http:*80:webservices。包含一个名为MyAPI的应用程序。我在使用web服务器的ip地址调用MyAPI应用程序时收到了可怕的消息。

为了成功地调用我的应用程序,我必须为webservices添加一个主机文件条目。在所有调用MyAPI应用程序的机器上。然后,我的所有请求都必须以http://webservices.local/MyAPI/为前缀,以便正确路由。

我今天遇到了这个问题,我花了一段时间才找到原因。

基本上,我的VS2015主项目包括一个使用更高版本的. net Framework构建的子项目。

奇怪的是,当你遇到这个问题时,VS2015会高兴地报告解决方案已经构建好了,但当你尝试运行网站时,它只是给你一个误导性的错误,表明你的Global.asax.cs文件是错误的。

所以,如果你看到这个错误,并且清理/重建不起作用,打开你的项目的References树,并检查感叹号。

enter image description here

另外,检查你的Output窗口是否有这样的消息:

The primary reference "C:\Projects\Business Objects 4\bin\Release\BusinessObjects.dll"
could not be resolved because it was built against
the ".NETFramework,Version=v4.5" framework.
This is a higher version than the currently targeted framework
".NETFramework,Version=v4.0".

当然,解决方案是右键单击您的主项目,选择顶部选项卡“Application”,并将目标框架版本更改为与您的子项目匹配的更高版本。

Visual Studio 2015会让你完全构建和运行包含这个问题的解决方案,这很令人恼火。这是自找麻烦!

我试过这里的所有方法,但都没用。我的项目是在VS 2013。我已经升级到VS 2015,并在2015年创建了我所有的新应用程序,但加载、编译、构建等所有在2013年构建的旧应用程序。

我最终在2015年加载了解决方案,它为我解决了这个问题。

我是这样解决这个问题的: 只需修复Global.asax.

. 名称空间

有两种方法:

    配置管理器将dll构建显示为'64'和'any cpu'构建的混合。

    .
  • 在分支之间切换时,IIS快速路径有时不会更新。右键单击任务栏中的“IIS Express”>显示所有应用程序,并验证路径是否指向正确的分支。

如果你在同一个解决方案中运行Web和WebApi,如果你不小心忘记将VS解决方案设置为“多个启动项目”,也会发生这种情况。

您可以通过右键单击解决方案资源管理器中的解决方案并选择“属性”来检查这一点。然后寻找“创业项目”。

我花了好几天时间研究这个问题。我最终通过以下这篇文章中的建议解决了这个问题。

  1. 将平台目标更改为任意CPU。我目前没有这个配置,所以我必须去配置管理器并添加它。我专门为x64编译。仅凭这一点并不能解决错误。
  2. 将输出路径更改为bin\而不是bin\x64\Debug。在我改变平台目标之前,我已经尝试过几次了。它只会得到一个错误,因为格式无效而无法加载程序集。

要明确的是,在它开始工作之前,我必须做这两件事。我已经尝试了多次,但它从来没有解决,直到我做了两个。

如果我将这些设置中的任何一个更改回原始,我会再次得到相同的错误,尽管已经运行了Clean Solution,并手动删除bin目录中的所有内容。

“BUILD ->配置管理器和——嗯哼——勾选我的项目旁边的复选框,以确保它实际上得到了构建。” 在windows资源管理器中进入项目文件夹,按下选项并取消“只读”复选框

从解决方案根目录中删除.vs目录。清洁。重建。

这个问题有时会让我发疯,我不可避免地会在这里翻找答案。我怀疑有多种原因可以产生这种异常,这一次为我工作。

我在VS 2017中遇到了这个问题,我花了一整天的时间来解决100个问题,其中任何一个都不起作用。然后我把我的整个解决方案,并在安装了VS 2017的不同机器上启动它。 它终于起作用了。然后在原来的版本上重新安装了VS 2017,它也开始运行了。我强烈建议你在另一台机器上尝试你的解决方案,不要浪费太多时间去调试它,因为这对我来说是VS 2017的一个BUG,我已经向VS TEAM报告了。希望这能对悲伤的人有所帮助。欢呼。< / p >
我的解决方案不是上面的任何一个。 我必须删除(而不是重新创建)全局。和Global.asax.cs。 这些文件存在于文件夹中,即使它们在项目中没有被引用。 显然那个建筑还看见了他们。 因为我在Startup.cs中使用了OWIN, Global。Asax文件过时了,删除它没有问题
我最近在一个Web应用程序中经历了这一点。 问题是一个nuget包带来了一个依赖: Microsoft.Net.Compiler和Microsoft.Code.Dom

它们支持多级编译器版本。

这将我的应用程序转换为ASP。NET网站而不是Web应用程序..我花了很长时间才解决这个问题——2.5天!!

我从Nuget管理器中删除了这些文件,删除了obj和bin目录中的文件-关闭studio -然后重新打开并重建项目。这就解决了问题

那是多么痛苦啊!!

我希望我在这一点上节省了一些时间!

是的,我读了所有的答案。然而,如果你是我,并且一直在拔你剩下的所有头发,那么试着检查\bin文件夹。像大多数proj文件一样,可能有几个配置分组在XML元素PropertyGroup下,然后我将OutputPath值从'bin\Debug'更改为删除'\Debug'部分并重新构建。这将文件放置在\bin文件夹中,允许Express IIS找到并加载构建。我想知道管理这些不同构建的正确方法是什么,以便本地调试部署能够找到并加载目标环境。

我在一个非常古老的溶液中有这个。事实证明,真正的问题是这些项目构建到4.6.1,而不是其他被引用的dll构建到4.7.2。在将解决方案中的所有项目更改为4.7.2后,它成功构建并运行应用程序。

我用很简单的方法修好了它。你所要做的就是删除ProjectName\bin文件夹中的所有文件,然后从Visual studio顶部菜单栏Build->Rebuild Solution重新构建项目,然后就完成了。现在试着运行这个项目。这个过程在Visual Studio 2022中为我工作。

重新创建虚拟目录为我解决了这个问题。

(在此之前,我尝试了这里列出的其他建议,如清理解决方案,删除bin文件夹,重建解决方案等。没有一个工作,直到我重新创建虚拟目录)

< p >调试→调试属性->网络→创建虚拟目录 Where to find Create Virtual Directory . < / p >

TL;博士:对我来说,在尝试了3天我能在这里找到的所有其他答案后,最终的解决方案是在我的IIS应用程序池高级设置中将启用32位应用程序设置为True,然后重新创建临时ASP。并为我的IIS_IUSRS组增加“修改”和“写入”权限。

我尝试的步骤:

  • 完全清洁和重建溶液。
  • 关闭并重新启动Visual Studio。
  • 删除临时ASP。NET文件目录(C:\Windows\Microsoft.NET\Framework*)。我的问题就是从这里开始的。
  • 重新启动开发机器。
  • 删除.vs文件夹并重新构建解决方案。
  • 重新创建C:\Windows\Microsoft.NET\Framework\v4.0.30319\临时ASP。网络文件。我的项目是64位应用程序,即使构建平台是AnyCPU
  • 验证web项目上的输出目录是否设置为bin/
  • 清除并检查我的版本控制分支的一个干净的副本。
  • 清除并克隆一个版本控制存储库的新副本。
  • 运行Windows update到最新版本的。net框架。
  • 修复、卸载和重新安装。net框架3.5和4.8。
  • 卸载并重新安装Visual Studio 2019 Professional。
  • 卸载并重新安装Windows中的Internet信息服务功能。
  • 下调ASP。NET NuGet包和重建解决方案(由于程序集的更改而发出的参考错误)。升级ASP。NET回到我的项目使用和重建解决方案。
  • 通过web项目的web属性重新创建IIS虚拟目录。
  • 创建“empty"全球。asax文件。在没有更改后恢复我的文件。
  • Codefile="Global.asax.cs"替换Codebehind="Global.asax.cs"这开始向我显示系统中存在的程序集引用的加载错误。
  • 启用IIS应用程序池中的32位应用程序。这开始显示对32位临时目录的访问错误。
  • 恢复所有临时ASP的权限。NET文件目录(除了完全控制)。这终于使我的web应用程序再次工作。

我能够从网上找到的无数答案中拼凑出足够的信息。在搜索我没有找到引用的。net dll后找到这个答案后,我尝试了最后的几个步骤,让我再次工作,在我第4天开始与这个令人难以置信的模糊问题搏斗。

如果有某种方法来诊断为什么全局变量,这个过程会快得多。asax无法加载,而不是太通用的Could not load type错误,没有详细信息。

这个故事的寓意:当清理临时ASP。NET Files目录,删除目录的内容,而不是目录本身。否则,可能会导致权限丢失。