1

InProc セッションがセッション オブジェクトを削除する原因に関する情報は山ほどありますが、ここで起こっているのはそれではありません。安定した InProc セッション オブジェクト内の個々の変数が欠落しており、それらが書き込まれていないのか、書き込みが成功した後に失われたのかはわかりません。セッションがライブであり、セッションに書き込まれたデータのすべてではなく一部が含まれていることを WinDBG で確認しました。

Guid g = System.Guid.NewGuid();
this.Context.Session.Add(g.ToString(), result.ImageData);           
output.Write("<img src=\"display.aspx?id=" + g.ToString() + "\">");

このコードは非常に簡単で、テストでは問題なく動作します。ただし、本番環境では負荷が高い場合、約 1% の確率で失敗します。Smith 氏がサイトにアクセスして 4 つの画像データを表示しようとすると、そのうち 2 つがセッションに保存され、2 つが失われる可能性があります。

Mr. Smith の InProc セッション オブジェクトが存在します。トラフィック ログは、彼が 4 回クリックしたことを示しており、それぞれに異なる id パラメータが付けられています。しかし、彼の InProc セッション オブジェクトには 4 つではなく 2 つの GUID しかありません。キャプチャした 2 つのセッション オブジェクトは、トラフィック ログに表示されている 2 つの ID に対応しています (彼の 1 回目と 3 回目のクリック)。ただし、4 回目のクリックでは、彼の InProc セッション オブジェクトにない GUID ID が表示されます。

上記のコードの 1 行目と 3 行目は、2 回目と 4 回目のクリックで明らかに機能しました。ただし、2 行目は何らかの理由で静かに失敗したようです。何らかの例外がスローされた場合、3 行目に到達することはなかったと思います。ユーザーが GUID ID を受け取る方法はわかりませんが、セッションはそれを取得できません。もう1つの可能性は、2行目は正常に機能しましたが、後で変数が消えたということです。想像もできません。

他に考えられる人はいますか?または、このような問題を再現する方法についての提案はありますか?

詳細: ASP.NET v3.5 IIS 6 Web ガーデニングなし Web ファームを実行していますが、ユーザーは常に同じサーバーに戻ってきます。ユーザーが他のサーバーにすり抜ける可能性があるかどうか、現在調査中です。

4

2 に答える 2

0

問題がロード バランサとスティッキー セッションによるものかどうかを判断する簡単な方法は、使用を完全に停止して、問題が再現するかどうかを確認することです。

それが不可能な場合は、セッションをアウト プロセス [ステート サーバー] に保存して、セッションを再度チェックすることができます。私はマイクロソフト グローバル テクニカル サポートで働いており、スティッキー セッションが機能しないケースを数多く見てきました。

http://aspalliance.com/1182

于 2010-11-12T17:41:25.613 に答える
0

可能であれば、ファーム内の各サーバーで同じマシン キーを使用することにより、スティッキー セッションの必要性を回避できます。

http://www.asp101.com/tips/index.asp?id=165

于 2010-11-12T19:16:32.307 に答える