0

私はアイデアを推測しています。同じアプリケーションプールで実行され、を使用している2つの.Net4アプリ間で同じSessionStateを使用しようとしていますmode="StateServer"。両方のアプリでテストを行いましたが、興味深い結果が得られました。SessionIDは共有されていますが、実際のセッションアイテムは共有されていません

内部ではどのように機能しますか?これはどこかに文書化されたセキュリティ制限ですか?

スクリーンショット1- app#1 /SecureSessionTest.aspxでセッションアイテム( TestDataの単純な日付)を設定しています: ここに画像の説明を入力してください

スクリーンショット2- app#2 /Apps/SecureSessionTest.aspxで同じセッションアイテムTestDataを読み取っていますが、SessionIDのみが表示されます。 スクリーンショット1:SessionIDは共有されますが、アイテムTestDataは共有されません

同じに別のデータを設定することもできますSession("key")。変!

彼らは両方とも彼らの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" />

何か案は?ヘルプは非常にありがたいです!

カール

4

2 に答える 2

1

StateServerは、SessionID cookie、マシンキー、およびアプリケーション名の組み合わせからセッションにキーを設定します。

2つのアプリケーションで同じアプリケーションプールを共有してみてください。

この前の質問は明らかになるかもしれません: セッション状態とアプリケーションプール

(私の最初の提案がうまくいかない場合は、コメントしてください。さらに深く掘り下げます)

于 2011-08-02T02:40:35.123 に答える
0

@Ashは正しいです。セッションは、sessionID(マシンキーとWebサイトドメインに依存します)とアプリケーション名に基づいていますが、アプリケーションディレクトリ全体の単一のサイトで機能するようになりました(シナリオ)-状態サーバーセッションに関する私の答えを参照してください-クロスappDomain?

欠落している部分は、global.asaxでアプリケーション名を明示的に設定しているようです(リフレクションを使用-このための構成設定は見つかりませんでした)。午前中のセットアップをグーグルで調べたところ、そのことを知りました。

于 2012-12-14T16:38:53.343 に答える