Session.Abandon を使用してセッション データをクリアしています。これにより、内部的に session_end が起動され、セッションが終了します。ローカル マシンでは正常に動作していますが、運用環境でテストすると失敗します (session_end が起動しません)。実稼働環境でロード バランサーを使用しているため、セッション データがクリアされているにもかかわらず、session_End イベントが発生しない理由であると思われます。セッション状態は InProc モードのみです。
編集-
修正 - 1 台のマシンで IIS を介してホストされている 2 つの Web サイトがあり、ロード バランサーが IIS への要求をナビゲートします。両方の Web サイトが同じ Cookie を共有しています。Cookie の値に基づいて、2 番目のサイトの Session_Start に値を設定しようとしています。ユーザーが最初のサイトから 2 番目のサイトにリダイレクトされたときは初めて問題なく動作しますが、2 回目のリダイレクトではセッションが null になります。session_start が 2 回目に呼び出されない場合にのみ発生する可能性があると確信しています。これは基本的に、最初のリダイレクト時に session_end を起動しない session.abandon を呼び出し、その後のすべてのリクエストで session_Start が起動しないことを意味します。