1

语境

我在控制器中。

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

4

3 回答 3

3

你有命名空间冲突,使用这个:

using HttpContext = System.Web.HttpContext;

于 2012-07-24T09:02:20.720 回答
2

控制器类包含 HttpContextBase 类型的 HttpContext 属性,这就是发生这种歧义的原因

public HttpContextBase HttpContext { get; }

这就是为什么您应该使用完整的限定名称或别名

于 2012-07-24T09:05:18.520 回答
1

这是因为您处于控制器的上下文中。控制器有一个名为HttpContexttype的属性HttpContextBase。此属性的实例是 current 的包装器HttpContext,这意味着您不必调用HttpContext.Current它,因为它已经在使用该属性的控制器中可用。

你可以这样做(只要你在控制器中):

HttpContext.Session["currentUser"];
于 2012-07-24T09:06:39.150 回答