我在控制器中。
我使用命名空间System.Web
:
using System.Web;
当我致电HttpContext.Current
时,VS提醒我Current
中未定义HttpContextBase
:
HttpContext.Current.Session["currentUser"];
如果我在System.Web
之前指出HttpContext.Current
,则可以:
System.Web.HttpContext.Current.Session["currentUser"];
为什么我应该在System.Web
之前指出HttpContext.Current
?
答案 0 :(得分:3)
你有命名空间冲突,请使用:
using HttpContext = System.Web.HttpContext;
答案 1 :(得分:2)
Controller类包含HttpContextBase类型的HttpContext属性,这就是发生这种歧义的原因
public HttpContextBase HttpContext { get; }
这就是为什么你应该使用完整的qulaified名称或别名
答案 2 :(得分:1)
这是因为您处于控制器的上下文中。控制器具有HttpContext
类型的HttpContextBase
属性。此属性的实例是当前HttpContext
的包装器,这意味着您不必调用HttpContext.Current
,因为控制器中已使用该属性可以使用该属性。
你可以这样做(只要你在控制器中):
HttpContext.Session["currentUser"];