1

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

4

1 に答える 1

0

IRequireSessionStateIRequireReadOnlySessionStateは相互に排他的です。何らかの方法でセッション状態を更新する場合にのみ、前者を実装する必要があります。

于 2012-05-04T06:28:53.897 に答える