クライアントページ(クロスドメインではなく、クロスドメインIISサーバーなど))で実行されるHttpHandlerがあり、埋め込みリンクをクリックすると、サーバーのハンドラーから起動されます。これまですべてが正常に動作しています。
System.Web.HttpContext.Sessionオブジェクトを使用しようとしていますが、nullです。 HttpHandlerが呼び出されるまでセッションがないため、nullだと思いますか?ハンドラを複数回呼び出すと、呼び出しごとに新しいセッションが作成されますか?この場合、MSはHttpHandlerを呼び出すときにSessionオブジェクトを無効にしただけですか?誰でもこれを確認できますか?
この場合、呼び出し間の状態を維持するために何をしますか?なんらかのSQLベースのデータオブジェクト?ファイル?
TIA
HttpHandlerにIRequiresSessionStateインターフェースを実装させます。セッション状態の使用を有効にします。 IRequiresSessionStateはSystem.Web.SessionState
名前空間。
空のインターフェース IReadOnlySessionState を実装する必要があると思うので、コンテキストがロードされます。
編集して追加:
Michael Mortonの回答によると、implementIRequiresSessionState を使用して、Sessionオブジェクトにも書き込みアクセス権を付与できます
using System;
using System.Web;
using System.Web.SessionState;
public class DownloadHandler : IHttpHandler, IReadOnlySessionState
{
public bool IsReusable { get { return true; } }
public void ProcessRequest(HttpContext context)
{
context.Response.Write(context.Session["kmx"]);
}
}