GenericHandler と anonymousIdentification に問題があります。
基本的<anonymousIdentification enabled="true" />
に、Web 構成で有効になっている場合、JQuery GET/POST 要求がサーバーに送信されるたびに、その要求は新しいユーザーと新しいユーザー セッションで実行されます。
これを軽減する方法はありますか?現在のユーザーのセッション変数にアクセスする必要があります...本当にイライラします!
GenericHandler と anonymousIdentification に問題があります。
基本的<anonymousIdentification enabled="true" />
に、Web 構成で有効になっている場合、JQuery GET/POST 要求がサーバーに送信されるたびに、その要求は新しいユーザーと新しいユーザー セッションで実行されます。
これを軽減する方法はありますか?現在のユーザーのセッション変数にアクセスする必要があります...本当にイライラします!
ジェネリック ハンドラーは、IReadOnlySessionState
セッション変数にアクセスするためのインターフェイスを実装する必要があります。セッション変数も記述する必要がある場合は、 を実装しIRequiresSessionState
ます。
System.Web.SessionState.IRequiresSessionState
インターフェイスを実装します。
public class Handler : IHttpHandler, System.Web.SessionState.IRequiresSessionState
{
public void ProcessRequest(HttpContext context)
{
context.Session["StackOverflow"] = "overflowing";
context.Response.Redirect("~/AnotherPage.aspx");
}
}
これを使用できます:
public class Handler :
IHttpHandler,
System.Web.SessionState.IReadOnlySessionState
Web ブラウザーで、開発者モードでネットワーク タブを有効にすることをお勧めします。次に、どの Cookie が送信されるか (存在する場合) を AJAX で確認します。
Cookie が表示されない場合は、ブラウザーがセッションを取得していないことを意味します。そのため、(Josh が述べたように) 正しいインターフェイスを継承して Cookie にアクセスする必要があります。(System.Web.SessionState を使用することを忘れないでください)
Cookie を生成するには、セッション オブジェクトの sessionID にアクセスします。
string sesId = context.Session.SessionID;
応答に何かを書き込む前に。