MVC4 中 Global.asax.cs 页面中的问题

Posted

技术标签:

【中文标题】MVC4 中 Global.asax.cs 页面中的问题【英文标题】:Issue in Global.asax.cs page in MVC4 【发布时间】:2014-02-19 13:03:41 【问题描述】:

我的 ASP.NET MVC 4 项目,我的 Global.asax.cs 页面显示错误

 WebApiConfig.Register(GlobalConfiguration.Configuration);

名称“GlobalConfiguration”在当前上下文中不存在

我已经做了很多控制器和视图等等...我该如何解决这个问题并恢复我的项目?

这是我的上下文代码的其余部分

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

namespace .....

    // Note: For instructions on enabling IIS6 or IIS7 classic mode, 
    // visit http://go.microsoft.com/?LinkId=9394801
    public class MvcApplication : System.Web.HttpApplication
    
        protected void Application_Start()
        
            AreaRegistration.RegisterAllAreas();

            WebApiConfig.Register(GlobalConfiguration.Configuration);
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
        
    

【问题讨论】:

您缺少该类的命名空间。 【参考方案1】:

就我而言,我在 Glabal.asax 中遇到了类似的问题:

The name 'AreaRegistration' does not exist in the current context.

我已经在Global.asax.cs 中有System.Web.Mvc 命名空间,但编译器有点不知道,也就是说,没有找到AreaRegistration 类。

解决问题的方法是在 Visual Studio 中的 Package Manager Console 中执行以下命令:

PM> Update-Package -reinstall

NuGet重新安装所有项目包后,出现缺少的类名,代码构建成功。

Visual Studio\NuGet 还原管道中出现问题...

【讨论】:

【参考方案2】:

我尝试了上面列出的大多数修复方法,但均无济于事。我确信上面的帖子通常可以解决十分之九的问题,但是对于这个错误,但这些都没有帮助我。

我对这个错误的修复是,我正在重命名我的命名空间,并且对命名空间有两个不同的引用,这最终导致了我的问题。由于我想用不同于我开始的东西来更新命名空间,我最终通过将我的命名空间更改为WebApiConfig.cs 中的新命名空间来解决这个问题。显然,这是我没有使用较新命名空间名称的最后一个文件之一。

好吧,一旦我改变了它,我的错误就消失了。此外,针对同一问题的另一个解决方法是指定 using old namespace name;,这也暂时修复了它,这让我只需在 WebApiConfig.cs 中用新名称重命名它。

【讨论】:

【参考方案3】:

使用 .NET Framework 4.5.1,可以在 System.Web.Http 中找到 GlobalConfiguration:

PM> Install-Package Microsoft.AspNet.WebApi.WebHost

【讨论】:

谢谢。这适用于.Net Framework 4.5.2 是的。做到了!与@NickMasao 相同的框架【参考方案4】:

在我的基于 4.5 的 asp.net webform 中,添加 System.Web.Routing dll 和下面的 import in global.aspx 解决了问题

<%@ Import Namespace="System.Web.Routing" %>
<%@ Import Namespace="System.Web.Http" %>

【讨论】:

【参考方案5】:

Update-Package Microsoft.AspNet.WebApi.WebHost -reinstall

这对我有用。我遇到了参考没有在更新包上正确更新甚至再次删除和安装包的问题。

上述命令会重新安装所有依赖项,并且通常会在我遇到 nuget 包引用问题时解决问题。

【讨论】:

哇!我已经在墙上敲了几个小时。没想到会这么容易!谢谢!【参考方案6】:

还可以尝试与 David Bohunek 的建议相反(不冒犯)。我试过大卫的建议无济于事。然后我会删除在“程序集”部分中直接引用的引用。

然后我删除了 Web Api 2.2 和 Web Api 2.2 Web Host Nuget,执行了清理,然后只是添加了 Web Api 2.2 Web Host NuGet。

试试看。祝你好运,它对我有用。

【讨论】:

【参考方案7】:

确保您引用了程序集 System.Web.Http.WebHost.dll。这就是 GlobalConfiguration 所在。

【讨论】:

我的问题是 AreaRegistration。以上对我不起作用;但是,NuGet“更新所有包”确实有效。 HTH。 强制删除和安装对我有用。相当快。

以上是关于MVC4 中 Global.asax.cs 页面中的问题的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET MVC:如何在 Global.asax.cs 中的 Application_Start() 中检测浏览器宽度

Global.asax.cs 为 /.aspx 执行子请求时出错。 Server.Transfer

Global.asax.cs介绍

在 global.asax.cs 中分配后未填充 Insights InstrumentationKey

MVC 应用程序 - 从 Global.asax.cs 检索 LoaderExceptions

为啥我在 Global.asax.cs 中的 Application_BeginRequest 没有被自托管的 WCF 服务调用