Global.asax中的“分析器错误消息:无法加载类型”
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Global.asax中的“分析器错误消息:无法加载类型”相关的知识,希望对你有一定的参考价值。
我正在研究MVC3项目并收到以下错误:
分析器错误消息:无法加载类型'GodsCreationTaxidermy.MvcApplication'。
来源错误:
第1行:
<%@ Application Codebehind="Global.asax.cs" Inherits="GodsCreationTaxidermy.Core.MvcApplication" Language="C#" %>
我得到的错误是无法加载GodsCreationTaxidermy.Core.MvcApplication但在此屏幕截图中Core部分未显示在错误中:
有没有人对此错误有任何想法或解决方案?
您的本地Web服务器运行的代码与您实际使用的代码不同。确保您已停止调试,停止本地Web服务器,清理并重建Peter建议,仔细检查您的global.asax和global.asax.cs,然后重试。
如果这不起作用并且您使用的是本地IIS,请尝试在IIS管理器中删除该站点并手动重新创建它。
当我有2个运行相同项目的Visual Studio实例时,我遇到同样的问题。所以我关闭了两个Visual Studio,只打开了一个实例,现在工作正常!
我正在研究一个较旧的'基于文件夹的'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中定义的类的名称
“构建 - >配置管理器 - 请注意我的项目旁边的框,以确保它实际构建完毕。”那个并转到Windows资源管理器中的项目文件夹,按下选项并取消选中“只读”复选框。
您还可以在IIS中检查站点的属性。 (在IIS中,右键单击该站点,然后选择“属性”。)确保“物理路径”设置指向应用程序的正确路径,而不是某些其他应用程序。 (这为我修复了这个错误。)
清空bin文件夹。构建所有依赖类库并在主项目中引用它们,并构建完整的解决方案。
我也遇到了同样的问题。尽管遵循每一个答案它没有工作。然后我将“Inherits = namespace.class”更改为“Inherits =完全限定的汇编名称”,即“Inherits = namespace.class,assemblyname,Version =,Culture =,PublicKeyToken =”希望它有所帮助。
如果您在同一解决方案中运行Web和WebApi时意外忘记将VS解决方案设置为“多个启动项目”,也会发生这种情况。
您可以通过右键单击解决方案资源管理器中的解决方案并选择“属性”来检查这一点。然后查找“启动项目”。
这个问题我通过给予文件夹的权限以及从IIS检查来解决。
当我在当地环境中测试时,我获得了所有人的许可。但在发布模式下,我认为我们只给ASP.Net用户许可。
我也得到了同样的错误...检查你正确开发的应用程序的名称,即。分配的命名空间和程序集名称,并尝试物理更改为应用程序创建的文件夹的名称,所有这些应该与文件global.asax中的上述命名空间中的名称相同
我也遇到了同样的错误...检查虚拟目录的IIS配置,并确保属性 - ASP.NET - ASP.NET版本与项目属性 - 应用程序 - 目标框架相同。 (这为我修复了这个错误。)
检查项目输出路径(项目属性/构建)是否设置为bin
而不是binRelease
或binDebug
由于某种原因,IIS(VS开发服务器或本地IIS)始终从bin
目录访问库(并且不会查找子目录)
我的应用程序是在旧版本的VS中构建的,并且没有bin文件夹。我已经将它升级到更新的版本,并且有一个噩梦让它部署。我最终将此错误跟踪到项目>属性>应用程序。目标框架设定为2.0;在服务器上更改它以匹配IIS管理器/应用程序池为我解决了这个问题。
我发现更改项目上的命名空间,而不重构整个解决方案是我的问题。检查项目属性并查看命名空间是什么,确保全面排列。
对我来说问题是我的项目中没有包含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);
}
}
}
重建项目可以解决问题。
我花了一天时间试图解决这个问题。
唯一有效的方法是删除.sln文件,创建一个新文件,然后逐个添加项目。
程序 _(T)_ / - 编程 - _(T)/
对于我的情况,Web程序集是GAC的一部分...所以在构建之后,它需要安装在GAC中并且它可以工作。
我遇到此错误消息,并最终发现该错误消息具有误导性。在我的情况下,似乎在IIS中存在路由问题,导致从Web服务器上的另一个站点读取global.asax,从而生成错误。
在IIS中,我的站点绑定到http:* 80:webservices.local并包含一个名为MyAPI的应用程序。我在使用Web服务器的ip地址调用MyAPI应用程序时收到了可怕的消息。
为了成功调用我的应用程序,我必须在所有调用MyAPI应用程序的机器上为webservices.local添加主机文件条目。然后我的所有请求都必须以http://webservices.local/MyAPI/为前缀才能正确路由。
我在这里尝试了一切,没有任何效果。我的项目是在VS 2013中。我已经升级到VS 2015并且在2015年创建了我的所有新应用程序,但是加载,编译,构建了所有我在2013年在该版本中构建的旧应用程序。
我最终只是在2015年加载解决方案并且它为我解决了它。
我在这个问题上花了好几天。我终于通过这篇文章中的以下建议组合解决了这个问题。
- 将平台目标更改为任何CPU。我目前没有这个配置,所以我不得不去配置管理器并添加它。我专门为x64编译。仅这一点并没有解决错误。
- 将输出路径更改为
bin
而不是binx64Debug
。在我更改平台目标之前,我已经尝试了好几次。除了因为格式无效而无法加载程序集的错误之外,它从未有所作为。
要清楚,我必须在它开始工作之前做这两件事。我曾经多次尝试过它们,但是直到我做了两次都没有修好它。
如果我将这些设置中的任何一个更改回原始设置,我会再次获得相同的错误,尽管已运行Clean Solution,并手动删除bin
目录中的所有内容。
从解决方案根目录中删除.vs
目录。清洁。重建。
这个问题偶尔让我疯狂,我不可避免地会在这里寻找答案。我怀疑有多种原因可以产生这种异常,这一次对我有用。
尝试修改global.asax文件(简单地在某处添加空格)并重新运行。这将强制内置的Web服务器刷新并重新编译global.asax文件。
还要做一个干净和重建 - 应该解决问题
有两种方法可以实现:
- 配置管理器将dll构建显示为'64'和'任何cpu'构建的混合。将它们全部放在同一个构建中会修复它。
- 在分支之间切换时,IIS express路径有时不会更新。右键单击任务栏中的“IIS Express”>显示所有应用程序并验证路径是否为正确的分支。
如果在生成global.asax
之后更改名称空间信息(项目或类级别),有时会发生这种情况。
右键单击Global.asax
文件并选择“打开方式”,然后选择“带编码的XML(文本)编辑器”(其他编辑器也可以使用,但这是我使用的)。
然后编辑XML指令中的“继承”部分
<%@ Application Codebehind =“Global.asax.cs”Inherits =“GodsCreationTaxidermy.MvcApplication”Language =“C#”%>)
这样它就匹配Application类的实际全名。就是这样。
另一个选择是从Global.asax.cs复制所有代码,然后删除并创建另一个Global.asax文件(然后将代码复制回Global.asax.cs)。
我关闭并重新打开视觉工作室,它工作。
我不得不去BUILD - > CONFIGURATION MANAGER和 - 哼 - 检查我项目旁边的框以确保它实际构建完成。
我今天遇到了这个问题,我花了一段时间才找到原因。
基本上,我的主要VS2015项目包括一个使用更高版本的.Net Framework构建的子项目。
奇怪的是,当你遇到这个问题时,VS2015会很高兴地报告解决方案已经构建好了,但是当你尝试运行网站时,它只是给你误导性的错误,暗示你的Global.asax.cs
文件是错误的。
因此,如果您看到此错误,并且清理/重建无效,请打开Project的References
树,并检查感叹号。
另外,检查你的Output
窗口是否有这样的消息:
The primary reference "C:ProjectsBusiness Objects 4inReleaseBusinessObjects.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”,然后将Target Framework版本更改为与子项目匹配的更高版本。
令人讨厌的是,Visual Studio 2015将让您完全构建和运行悄悄包含此问题的解决方案。这是在寻找麻烦..!
我刚刚在一个MVC5应用程序上遇到过这个,没有任何东西对我有用。这是在我尝试将SVN恢复为旧版本项目之后发生的。
我不得不删除global.asax.cs,然后通过右键单击Project - > Add New Item - > Global.asax添加一个新的,最后修复了它。
只是觉得它可能对某人有帮助。
我必须报告我在这篇文章中尝试过至少4条建议。他们都没有工作。然而,我很高兴地报告说我通过从后面检索恢复了。只需从日志文件更新我的上一次代码更改。花了不到10分钟。花了3次阅读这篇文章并尝试其他建议。抱歉。
这是一个非常奇怪的错误。祝所有遇到这个gremlin的人好运。
以上是关于Global.asax中的“分析器错误消息:无法加载类型”的主要内容,如果未能解决你的问题,请参考以下文章
ASP.NET中的Webconfig 和 Global.asax区别
Global.asax 中的“解析器错误消息:无法加载类型”
Global.asax中的Application_Error事件不执行