4

我有一个 ControllerBase 抽象类,如下所示。

using System.Web;
using System.Web.Mvc;
public abstract class ControllerBase : Controller
{
    public static string SesssionId
    {
         get { return HttpContext.Current.Session["SessionId"]; }
    }
}

我收到错误

“非静态字段、方法或属性‘System.Web.Mvc.Controller.HttpContext.get’需要对象引用”

但是我在其他静态类中使用了相同的方法并且没有出现上述错误。

我想知道 HttpContext 是如何被访问的,但不是当前的。

谁能澄清一下,上面有什么问题。

4

1 回答 1

8

您的基类本身Controller指定了一个HttpContext属性。因此,当在派生类中使用它时ControllerBase,编译器会认为您要引用基类的这个属性。

正如 wudzik 在第一条评论中建议的那样,您可以将属性设为非静态。我想这将是更清洁的方法。

如果你需要保持这个属性静态,你必须告诉编译器你想要使用HttpContextnamespace 类System.Web

public static string SesssionId
{
     get { return System.Web.HttpContext.Current.Session["SessionId"]; }
}
于 2013-08-19T06:05:15.207 回答