2012-05-01 10 views
1

ASP.NETで管理されているSessionCookieをashxファイルに配置するにはどうすればよいですか? ashx-Fileの呼び出しはクッキーを置かないので、セッションを維持することはできません。ASP.NETでセッションクッキーを配置するHTTPHandler(ashx)を作成する

背景:HTTPベースのWebサービスラッパーを作成しようとしています。異なるクライアントは、私が指定したパラメータでそれらを提供するURLを呼び出します。資格情報を確認し、サードパーティのWebサービスに電話し、変更された結果をクライアントに返します。サードパーティのWebサービスプロバイダは、契約ごとに異なるクライアント呼び出しごとにSessionIDを要求します。

解決策:HTTPHandlerが最適な選択です。そこで私はWeb Site Projectを作成しました。残念なことに、ashx-Fileの直接呼び出しは、セッションクッキーをレスポンスに追加しないようであるため、同じクライアントからのすべての呼び出しに対して新しいSessionIDが作成されます。

私は、関連する次のようでした:

  • 実装のマークアップは、web.configファイルにGlobal.asaxの中にセッション状態で
  • 保存何かをIRequiresSessionStateまたは/および IReadOnlySessionState
  • 追加<sessionState mode="InProc" cookieless="false" timeout="20" /> をインターフェース のファイルSession_Start-Method HttpContext.Current.Session( "init")= 0
避けなければならない仕事が、の

別の試み:

  • セッションが維持されているので、Default.aspxファイルの呼び出しは、セッションクッキーを配置ASHX-ファイルを呼び出す前に。
  • データベースとタイムスタンプを使用して「独自の」セッションを実装します。

バージョン:6.0

+0

これはどのバージョンのIISで、web.config(system.web)の特定の部分を共有できますか? –

+0

追加情報を追加 – Anytoe

答えて

0

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

+0

私はすべての組み合わせを試しました。問題は、クッキーがまったく設定されていないということです。私が手作業でDefault.aspx Webサイトを呼び出すと、セッションはHTTPHandlerのように動作します。 – Anytoe

+0

さて、これからも作業を続けますが、IRequireSessionStateを実装する必要があります。私はあなたの質問にコメントでいくつかの詳細を求めるつもりです。 –

関連する問題