0

別のセッションの途中で新しいセッションを開始するように見える ASP.NET アプリケーションがあります。

  • フォーム認証の使用。

  • 認証タイムアウト = 120。 sessionState タイムアウト = 130。

  • sessionState モード = InProc.

  • cookieless = false (これは UseCookies と同じはずです)。

  • 十数ページにアクセスした後、特定のページにアクセスした場合にのみ発生します。ただし、失敗したページにアクセスする前に他のページにアクセスすると、エラーは発生しません。

  • アプリケーション プールのリサイクルによるものではありません。同じ w3wp プロセスを何時間も実行し続けています。ヘルス モニタリングのログには何も表示されません。

  • F12 開発者ツールでネットワーク機能を使用すると、すべての Cookie 値が 1 つのセッションから次のセッションに移行しても存続しますが、障害が発生した時点で Cookie ビューには「Received: ASP.NET_SessionId」と表示されますが、同じ要求の他のすべての値が表示されます。 「送信済み」として。

  • すべてが同じドメイン (この場合は localhost) 内で発生します。

  • オブジェクトは、ユーザーがログインした直後に Session オブジェクトに格納されるため、未使用の Session オブジェクトが原因でリクエストごとに ASP.NET_SessionId が変更されるケースの 1 つではありません。

  • Windows 7 x64 開発システム上の IIS 7.5。すべての Windows アップデートで完全に最新の状態に。

  • Global.asax のすべてのグローバル イベントにデバッグ ステートメントを追加しましたが、要求の途中でセッション ID が失われる原因となっているコードはありません。その時点までに数十のリクエストが正常に処理されたにもかかわらず、特定の関数が呼び出されたときに新しい Session_Start イベントを取得するだけです。

User-Agent 文字列の例 (Chrome): "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML、Gecko など) Chrome/38.0.2125.104 Safari/537.36"

User-Agent 文字列の例 (Internet Explorer): "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko"

この問題は、Internet Explorer 9、10、および 11 を使用して一貫して再現できます。以前のバージョンの Internet Explorer は試していません。

最新バージョンの Firefox または Chrome を使用して問題を再現することはできません。

Internet Explorer を実行しているが他の種類のブラウザーを実行していない場合に、ASP.NET が新しいセッションを開始し、新しい ASP.NET_SessionId 値を割り当てる必要があると考える理由を理解するために確認できるリストはありますか?

申し訳ありませんが、これ以上具体的にお伝えすることはできませんが、少なくとも上記の情報によって、通常の容疑者の一部が会話から排除されることを願っています.

4

1 に答える 1

0

The problem turned out to be the 50-cookie limit in Internet Explorer.

This is described in Number and size limits of a cookie in Internet Explorer

and Internet Explorer increases the per-domain cookie limit from 20 to 50.

The excessive use of cookies resulted in several cookies being added for each visit to a new function which is why it required a fair amount of testing to get to the point where the session id got pushed out by the arrival of new keys in the cookie collection.

Chrome has a limit of 180 cookies whereas Firefox has a limit of 150 which explains why the application would continue working for much longer than was the case with Internet Explorer.

The limits for a given browser can be tested using the Browser Cookie Limits page.

I found that link in the accepted answer to What are the current cookie limits in modern browsers?

于 2014-10-29T08:57:15.460 に答える