我无法使用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
答案 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。