私はAuthorizeAttributeを使用して、ユーザーがページにアクセスするために設定された18歳以上のCookieを持っていることを確認しています。セッションがMVC AuthorizeAttributeでnullになる
これはうまくいきますが、私は少し前に拡張しています。 すべてのビューはこの属性を使用しているため、私はサイトを早期に立ち上げることができます。 useがVIEWSITE = trueを任意のURLに追加すると、Session変数が設定され、サイトにアクセスできるようになります。それ以外の場合は、保持ページに移動します。
これはページが初めて実行されるときに正常に動作します。しかし、私はページ上で出力キャッシュを使用しています。次回のページロード時に、httpcontext.sessionはnullですか?
私は、彼らが正しい順序で実行することを確認するために私の属性に「注文」varibleを追加しました:
[OfAge(Order = 1)]
[OutputCache(Order = 2, Duration = 2000, VaryByParam = "categoryName")]
Snipitを自分の属性から:
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
HttpRequestBase req = httpContext.Request;
HttpResponseBase res = httpContext.Response;
DateTime Live_Date = new DateTime(2011, 07, 01, 07, 0, 0);
if (DateTime.Now > Live_Date || req.QueryString["VIEWSITE"] != null || httpContext.Session["VIEWSITE"] != null)
{
httpContext.Session["VIEWSITE"] = true;
は、私が行方不明です何かがありますページがキャッシュから読み込まれると、セッション変数を読み込み/設定できるようになりましたか?
明確にするために、それがnullではなく、特にhttpContext.Session [「VIEWSITE」]
、また私を助け何かがこの記事でした。http://stackoverflow.com/questions/5447611/why-are-there-two-incompatible- session-state-types-in-asp-net。 HttpSessionStateBase(wrapper)とSystem.Web.SessionState.HttpSessionState(asp.net 1の日の基底コア)にMVCセマンティクスを追加しました。 – KDT