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

基本クラスは、 HttpContextプロパティ自体をController指定します。したがって、派生クラスで使用する場合、コンパイラは、基本クラスのこのプロパティを参照したいと考えています。ControllerBase

wudzik が最初のコメントで提案したように、プロパティを非静的にすることもできます。私はこれがそれを行うためのよりクリーンな方法になると思います。

このプロパティを静的に保つ必要がある場合はHttpContext、名前空間のクラスを使用することをコンパイラに伝える必要がありますSystem.Web

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