227

我正在开发一个 MVC3 项目并收到以下错误:

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

源错误:

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

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

错误页面截图

有没有人对此错误有任何想法或解决方案?

4

37 回答 37

246

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

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

于 2013-03-14T16:40:27.330 回答
186

您的本地 Web 服务器运行的代码与您实际工作的代码不同。确保您已停止调试,停止本地 Web 服务器,按照 Peter 的建议清理和重建,仔细检查您的 global.asax 和 global.asax.cs,然后重试。

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

于 2012-08-08T21:56:48.860 回答
39

尝试修改 global.asax 文件(简单地在某处添加空格)并重新运行。这将强制内置网络服务器刷新并重新编译 global.asax 文件。

也做一个干净和重建 - 应该解决问题

于 2012-07-27T06:31:04.170 回答
33

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

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

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

<%@ Application Codebehind="Global.asax.cs" Inherits="GodsCreationTaxidermy.MvcApplication" Language="C#" %>)

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

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

于 2014-05-06T05:22:27.953 回答
24

我关闭并重新打开了视觉工作室,它起作用了。

于 2014-04-14T06:33:14.440 回答
19

我不得不去 BUILD -> CONFIGURATION MANAGER 并且——咳咳——选中我的项目旁边的框以确保它确实被构建了。

于 2014-12-03T22:41:39.937 回答
6

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

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

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

因此,如果您看到此错误,并且清理/重建没有帮助,请打开您的项目References树,并检查感叹号。

在此处输入图像描述

另外,请检查您的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".

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

令人讨厌的是,Visual Studio 2015 将让您完全构建和运行悄悄包含此问题的解决方案。这是自找麻烦..!

于 2017-04-06T09:14:31.820 回答
3

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

我不得不删除global.asax.cs,然后通过右键单击 Project -> Add New Item -> Global.asax 添加一个新项目,最终修复它。

只是认为它可能会帮助某人。

于 2015-02-12T19:04:05.457 回答
3

我正在开发一个较旧的“基于文件夹”的 ASP.NET Web 项目(我讨厌它)——发现这是我的解决方法:

创建一个App_Code文件夹(如果您还没有)

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

Global.asax 中的标记可以省略任何命名空间(至少,对于这种风格的项目,afaik):

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

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

于 2015-08-27T20:20:03.823 回答
3

“BUILD -> CONFIGURATION MANAGER 和 - 咳咳 - 选中我的项目旁边的框,以确保它真的被构建了。” 那并转到Windows资源管理器中的项目文件夹,按选项并取消选中“只读”复选框有帮助。

于 2018-01-29T11:14:00.803 回答
2

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

于 2013-06-01T00:43:50.843 回答
2

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

来源

于 2013-10-01T16:36:13.787 回答
2

我必须报告我从这篇文章中尝试了至少 4 条建议。他们都没有工作。然而,我很高兴地报告,我通过从备份中检索恢复。只需要从日志文件更新我最后的代码更改。花了不到10分钟。花了 3 次阅读这篇文章并尝试其他建议。对不起。

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

于 2015-05-15T20:01:22.527 回答
2

当我有 2 个运行相同项目的 Visual Studio 实例时,我遇到了同样的问题。所以我关闭了 Visual Studio 并只打开了一个实例,现在它工作正常!

于 2015-08-12T07:49:12.317 回答
2

.vs从解决方案根目录中删除该目录。干净的。重建。

这个问题有时会让我发疯,我不可避免地会在这里翻阅答案。我怀疑有多种原因会产生此异常,这曾经对我有用。

于 2018-12-02T22:57:56.527 回答
1

通过授予文件夹的正确权限以及从 IIS 进行检查,我解决了这个问题。

当我在本地环境中进行测试时,我获得了所有人的许可。但在发布模式下,我认为我们只授予 ASP.Net 用户权限。

于 2013-08-03T07:35:48.640 回答
1

我也面临同样的问题。尽管遵循了每个答案,但它没有用。然后我将“Inherits= namespace.class ”更改为“Inherits=全限定汇编名称”,即“Inherits= namespace.class,assemblyname, Version=, Culture=, PublicKeyToken= ” 希望对您有所帮助。

于 2015-08-26T09:39:13.487 回答
1

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

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

于 2017-11-28T17:34:21.460 回答
1

对我来说,解决方案不是上述任何一种。我不得不删除(而不是重新创建)Global.asax 和 Global.asax.cs。这些文件存在于文件夹中,即使项目中没有引用它们。显然,构建仍然看到它们。由于我将 OWIN 与 Startup.cs 一起使用,因此 Global.asax 文件已过时,删除它没有问题。

于 2019-12-02T12:06:29.490 回答
1

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

于 2020-03-02T15:12:49.503 回答
0

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

于 2013-09-25T06:41:30.547 回答
0

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

于 2013-10-11T13:40:04.913 回答
0

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

于 2013-11-18T21:22:28.533 回答
0

我发现更改项目的命名空间,而不在整个解决方案中对其进行重构是我的问题。检查您的项目属性并查看您的命名空间是什么,确保所有内容都排列整齐。

于 2014-11-04T08:08:34.007 回答
0

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

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);
        }
    }
}
于 2015-06-29T13:44:12.790 回答
0

我花了一天的时间试图解决这个问题。

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

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

于 2016-05-20T16:10:56.503 回答
0

就我而言,Web 程序集是 GAC 的一部分......所以在构建之后,它需要安装在 GAC 中并且它可以工作。

于 2017-01-06T12:15:19.193 回答
0

我遇到了这个错误信息,最终发现这个错误信息具有误导性。在我的情况下,IIS 中似乎存在路由问题,导致从 Web 服务器上的另一个站点读取 global.asax,从而产生错误。

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

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

于 2017-02-23T20:12:14.087 回答
0

我在这里尝试了一切,但没有任何效果。我的项目是在 VS 2013 中。此后我升级到 VS 2015 并在 2015 年创建了我所有的新应用程序,但加载、编译、构建了我在 2013 年在该版本中构建的所有旧应用程序。

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

于 2017-04-28T17:28:48.483 回答
0

有两种方法可以得到这个:

  • 配置管理器将 dll 构建显示为“64”和“任何 cpu”构建的混合。将它们全部放在同一个版本中可以修复它。

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

于 2017-10-05T14:42:20.490 回答
0

我在这个问题上花了几天时间。我终于通过这篇文章中的以下建议组合解决了这个问题。

  1. 将平台目标更改为任何 CPU。我目前没有这个配置,所以我不得不去配置管理器并添加它。我是专门为 x64 编译的。仅此一项并不能解决错误。
  2. 将输出路径更改为bin\而不是bin\x64\Debug. 在更改平台目标之前,我已经尝试过几次。除了由于格式无效而无法加载程序集的错误之外,它从来没有产生任何影响。

需要明确的是,我必须在它开始工作之前完成这两项工作。我曾多次单独尝试过它们,但直到我都尝试过它才修复它。

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

于 2018-01-06T20:52:47.547 回答
0

我突然在 VS 2017 中遇到了这个问题,花了我一整天的时间浏览了 100 个解决方案,其中任何一个都不起作用。然后,我采用了整个解决方案,并在安装了 VS 2017 的不同机器上启动了它。它终于成功了。比在原始版本上重新安装 VS 2017 并且它也开始在其上运行。我强烈建议您在浪费大量时间进行调试之前在另一台机器上尝试您的解决方案,因为在我看来,这是 VS 2017 中的一个 BUG,已向 VS TEAM 报告了相同的情况。希望这可以帮助任何悲伤的人。干杯。

于 2019-04-16T06:44:44.673 回答
0

我最近在一个 Web 应用程序中遇到了这种情况。问题是一个nuget包带来了依赖:Microsoft.Net.Compiler和Microsoft.Code.Dom

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

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

我从 Nuget Manager 中删除了这些文件,删除了 obj 和 bin 目录中的文件 - 关闭了工作室 - 然后重新打开并重建了项目。那解决了它,但是

那是多么痛苦啊!!

我希望我能节省一些其他人的时间!

于 2020-03-02T00:16:01.297 回答
0

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

于 2021-12-01T20:32:39.917 回答
0

我以非常简单的方式修复了它。您所要做的就是删除文件ProjectName\bin夹中的所有文件,然后从 Visual Studio 顶部菜单栏中Build->Rebuild Solution再次重建项目,您就完成了。现在尝试运行该项目。这个过程在 Visual Studio 2022 中对我有用。

于 2022-01-09T07:48:41.837 回答
-2

无法在您的项目中加载错误 firstly Fix your errors and after rebuild project its working

于 2016-06-17T03:26:21.190 回答
-2

我以这种方式解决了这个问题:只需修复 Global.asax 中的命名空间

于 2017-06-24T22:16:04.560 回答