我有一个ControllerBase抽象类,如下所示。
using System.Web;
using System.Web.Mvc;
public abstract class ControllerBase : Controller
{
public static string SesssionId
{
get { return HttpContext.Current.Session["SessionId"]; }
}
}
我收到错误
“非静态字段,方法或者需要对象引用 property'System.Web.Mvc.Controller.HttpContext.get“
但是我在其他静态类中使用了相同的内容并且没有出现上述错误。
我想知道HttpContext是如何可访问的,而不是当前的。
有人能澄清我,上面有什么问题。
答案 0 :(得分:7)
您的基类Controller
指定了HttpContext属性。
因此,在派生类ControllerBase
中使用它时,编译器认为您要引用基类的此属性。
你可以使这个属性非静态,正如wudzik在第一条评论中所建议的那样。 我想这将是更清洁的方式。
如果您需要将此属性保持为静态,则必须告诉编译器您要使用HttpContext
类的命名空间System.Web
:
public static string SesssionId
{
get { return System.Web.HttpContext.Current.Session["SessionId"]; }
}