72

我无法使用 C#4.5 在我的项目 MVC4 上访问 HttpContext.Current

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

但我只能访问 currentHandler ......

var context = HttpContext.CurrentHandler; //Current

HttpContext.Current在 C#4.5 上已弃用?

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

4

3 回答 3

144

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

using System.Web;

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

 System.Web.HttpContext.Current
于 2013-08-19T08:19:50.390 回答
39

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

System.Web.HttpContext.Current

但是,强烈不建议在 ASP.NET MVC 中访问这样的上下文,所以是的,您可以认为System.Web.HttpContext.Current在 ASP.NET MVC 中已弃用。访问当前上下文的正确方法是

this.ControllerContext.HttpContext

或者如果您在控制器中,只需使用成员

this.HttpContext
于 2013-08-19T08:21:21.347 回答
7

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

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

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

你应该这样做:

HttpContext.User.Identity.Name

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

可以在此处找到有关此问题的另一个很好且直接的信息:MVC ASP.NET 中的 HttpContext.Current 和 Controller.Context 之间的区别

于 2016-06-09T00:00:56.797 回答