无法访问HttpContext.Current

我无法访问HttpContext.Current与我的项目MVC4与C#4.5

我在我的项目中添加了对System.Web的引用,并在我的控制器页面上添加了使用说明…

但是我只能访问currentHandler …

var context = HttpContext.CurrentHandler; //Current 

HttpContext.Current在C#4.5上被弃用了吗?

我已经看过这个帮助页面: http : //msdn.microsoft.com/en-us/library/system.web.httpcontext.aspx

您是否在应用程序中包含了System.Web程序集?

 using System.Web; 

如果没有,请尝试指定System.Web命名空间,例如:

  System.Web.HttpContext.Current 

这是因为你指的是名为HttpContext的控制器的属性。 要访问当前上下文,请使用完整的类名称:

 System.Web.HttpContext.Current 

然而,这是非常不build议在ASP.NET MVC中访问这样的上下文,所以是的,你可以把System.Web.HttpContext.Current想象成在ASP.NET MVC中被弃用。 访问当前上下文的正确方法是

 this.ControllerContext.HttpContext 

在这里添加一点来缓解混乱。 尽pipe达伦·戴维斯(接受)的答案更直接,但我认为安德烈的答案是MVC应用程序的更好方法。

从Andrei的答案意味着你可以像使用System.Web.HttpContext.Current一样使用HttpContext 。 例如,如果你想这样做:

 System.Web.HttpContext.Current.User.Identity.Name 

你应该这样做:

 HttpContext.User.Identity.Name 

两者都取得了相同的结果,但(再次)在MVC方面 ,后者更受推荐。

关于这个问题的另一个好的和直接的信息可以在这里find: MVC ASP.NET中的HttpContext.Current和Controller.Context之间的区别 。