如何在抽象类的静态属性中使用HttpContext.Current.Session。

时间:2013-08-19 05:44:03

标签: c# asp.net-mvc

我有一个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是如何可访问的,而不是当前的。

有人能澄清我,上面有什么问题。

1 个答案:

答案 0 :(得分:7)

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

你可以使这个属性非静态,正如wudzik在第一条评论中所建议的那样。 我想这将是更清洁的方式。

如果您需要将此属性保持为静态,则必须告诉编译器您要使用HttpContext类的命名空间System.Web

public static string SesssionId
{
     get { return System.Web.HttpContext.Current.Session["SessionId"]; }
}