无法访问HttpContext.Current

时间:2013-08-19 08:16:45

标签: c# asp.net-mvc asp.net-mvc-4 razor

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

我在项目中添加了对System.Web的引用,并在控制器页面添加了using指令...

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

var context = HttpContext.CurrentHandler; //Current

C#4.5上是否已弃用HttpContext.Current

我已查看此帮助页面:http://msdn.microsoft.com/en-us/library/system.web.httpcontext.aspx

3 个答案:

答案 0 :(得分:121)

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

using System.Web;

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

 System.Web.HttpContext.Current

答案 1 :(得分:32)

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

System.Web.HttpContext.Current

但是,强烈建议不要在ASP.NET MVC中访问此类上下文,所以是的,您可以将System.Web.HttpContext.Current视为在ASP.NET MVC中被弃用。访问当前上下文的正确方法是

this.ControllerContext.HttpContext

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

this.HttpContext

答案 2 :(得分:3)

添加一点以减轻这里的混乱。尽管Darren Davies' (接受)答案更直接,我认为Andrei的答案是 MVC 应用程序的更好方法。

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

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

你应该这样做:

HttpContext.User.Identity.Name

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

有关此事的另一个好的和直接的信息可以在这里找到:https://bugs.chromium.org/p/chromium/issues/detail?id=606000