为什么我应该在HttpContext.Current之前指出System.Web?

时间:2012-07-24 09:00:35

标签: c# asp.net-mvc

上下文

我在控制器中。

我使用命名空间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

3 个答案:

答案 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"];