无法访问 HttpContext

我无法访问 HttpContext

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

但我只能访问 Current Handler..。

var context = HttpContext.CurrentHandler; //Current

在 C # 4.5上 HttpContext.Current是否已被废弃?

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

134187 次浏览

在应用程序中包含 System.Web程序集了吗?

using System.Web;

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

 System.Web.HttpContext.Current

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

System.Web.HttpContext.Current

然而,在 ASP.NET MVC 中,我们强烈建议不要这样访问上下文,所以,是的,您可以认为 System.Web.HttpContext.Current在 ASP.NET MVC 中是不被推荐的。访问当前上下文的正确方法是

this.ControllerContext.HttpContext

或者如果您在 Controller 中,只需使用 member

this.HttpContext

添加一点来缓解这里的混乱。尽管 Darren Davies 的回答(被接受)更为直接,但我认为 Andrei 的回答对于 车祸应用程序来说是一种更好的方法。

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

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

你应该这样做:

HttpContext.User.Identity.Name

两者都达到了相同的结果,但(再次)就 车祸而言,后者更为推荐。

关于这个问题的另一个好的也是直截了当的信息可以在这里找到: MVC ASP.NET 中 HttpContext. Current 与 Controller. Context 的区别