2011-08-02 11 views
0

私は考えを払っています。同じアプリケーションプールの下で実行されている2つの.Net 4アプリの間で同じSessionStateを使用しようとしており、mode="StateServer"を使用しています。私は両方のアプリケーションでテストを行ったと私は好奇心の結果があります:SessionIDは共有されますが、実際のセッション項目ではありませんStateServerを持つ2つのアプリケーション間でASP.NET SessionStateを共有すると、同じSessionIDは共有されますが、キー値は共有されません。なぜですか?

内部的にどのように機能しますか?これはどこかで文書化されたセキュリティ制限ですか?私は同じことを読んでいる - enter image description here

スクリーンショット2: -

スクリーンショット1 1 /SecureSessionTest.aspxアプリ#で、私はセッションの項目を設定しています(TESTDATAでシンプル日付)セッション項目アプリ#2 /Apps/SecureSessionTest.aspxでTESTDATAが、唯一のセッションIDが表示されます: Screenshot1: SessionID is shared, but not item TestData

私も同じ0で異なるデータを設定することができます。奇妙な!

彼らの両方が彼らのweb.configファイルでこれを持っている:

<machineKey validationKey='7D1094A0FC13B6656141916F69F6E25D0F112A6E94BD3EF5DAEFD9755A367C09607E7D76827AC5ACAD14456665C4E0966F632F09522475758A815A4045BF3F25' decryptionKey='F0DF9FA0522E541FF246ADD8BC285A10E984444AE4361631' validation='SHA1'/> 
<sessionState mode="StateServer" stateConnectionString="tcpip=localhost:42424" timeout="60" regenerateExpiredSessionId="false" cookieName="XXXXXXXX_ASP.NET_SessionId" /> 

任意のアイデア?ヘルプは非常に高く評価されています!

カール

+0

これは、セッション記憶域としてSQL Serverを使用しているときの比較的簡単な解決策です。http://blogs.msdn.com/b/toddca/archive/2007/01/25/sharing-asp-net-session-state-across -applications.aspx – VinayC

答えて

0

は、StateServerキーセッションIDクッキー、マシンキー、およびアプリケーション名の組み合わせのオフセッション。

2つのアプリケーションが同じアプリケーションプールを共有するようにしてください。

この前の質問には、照明することができる。 Session State and Application Pool

(私の最初の提案は動作しない場合は、コメントと私は深く掘るだろうしてください)

+0

正しい答えはあなたが簡単にできないことです。これは設計によって吸う。 – Malartre

0

@Ashが正しいと、セッションがオフに基づいていますセッションID(マシンキーとウェブサイトドメインに依存しています)とアプリケーション名ですが、アプリケーションディレクトリ全体で単一のサイトで動作するようになっています(ご使用のシナリオのように聞こえる) - state server session - cross appDomain?

あなたはミスの作品のように聞こえるssingは、global.asaxのアプリケーション名を明示的に設定しています(リフレクションを使用していますが、これについての設定は見つかりませんでした)。私はちょうど午前中にセットアップのためのグーグルでそれについて知りました。

関連する問題