ashx ファイルで HTTPHandler を作成し、ASP.NET によって管理される SessionCookie を配置するにはどうすればよいですか? ashx-File の呼び出しは Cookie を配置しないため、セッションを維持できないようです。
背景: HTTP ベースの Web サービス ラッパーを作成しようとしています。さまざまなクライアントが、特定のパラメーターを指定して提供する URL を呼び出します。資格情報を確認し、サード パーティの Web サービスを呼び出して、変更された結果をクライアントに返します。サード パーティの Web サービス プロバイダーは、異なるクライアント呼び出しごとに、契約によって SessionID を要求します。
解決策: HTTPHandler が最良の選択のようです。そこで、Web サイト プロジェクトを作成しました。残念ながら、ashx-File を直接呼び出してもセッション cookie が応答に追加されないように見えるため、同じクライアントからの呼び出しごとに新しい SessionID が作成されます。
関連する次のことを行いました。
- 実装されたマークアップ インターフェイス IRequiresSessionState または IReadOnlySessionState
<sessionState mode="InProc" cookieless="false" timeout="20" />
web.config に追加- Session_Start-Method HttpContext.Current.Session("init") = 0 の Global.asax ファイルのセッション状態に何かを保存します
機能するが避けるべきさまざまな試み:
- ashx ファイルを呼び出す前に、Default.aspx ファイルを呼び出すとセッション Cookie が配置されるため、セッションが維持されます。
- データベースとタイムスタンプを使用して「独自の」セッションを実装します。
バージョン: IIS 6.0