4

サーバー (Win Server 2003) のアプリケーション イベント ログで次の問題を確認しましたhttp://support.microsoft.com/kb/308097が表示されません。ランダムなユーザーに対してセッションがランダムにドロップするようです

これは単一サーバーのセットアップであり、Web ファームも負荷分散もありません

上記の問題はログに記録されませんが、stateNetworkTimeout 属性を増やす価値はありますか? 現時点での構成は単純です

<sessionState mode="StateServer" cookieless="false" stateConnectionString="tcpip=localhost:42424" timeout="60"/>

更新:

FormsAuth を使用し、タイムアウトを 60 に設定

IIS6 の設定

  1. ワーカー プロセスのリサイクル (分単位) = 120
  2. ワーカー プロセスのリサイクル (リクエスト数) = 35000
  3. 次の時間にワーカー プロセスをリサイクルする = オフ
  4. 最大仮想メモリ = オフ
  5. 最大使用メモリ = 未チェック
  6. アイドル状態になった後にワーカー プロセスをシャットダウンする = 90
  7. カーネル要求キューを制限する = 1500
  8. それ以外=未チェック
4

2 に答える 2

4

これは古い質問だと思いますが、最近同様の問題が発生しました。私の場合、追加のログ記録により、一連の .aspx ページでセッション変数が一見ランダムに失われていることが明らかになりました。

このブログ投稿に出くわした後、コードを確認したところ、すべての Response.Redirect ステートメントがデフォルト (例: Response.Redirect(target)) または true (例: Response.Redirect(target, true) ) のいずれかでした。リダイレクトを確認し、セッション変数を false に設定した後に発生したリダイレクトを設定します (例: Response.Redirect(target, false) ) -- 問題は [一見] 解決されました!ページの残りの部分は、false を渡すとリダイレクト後に実行されます多くの場合、リダイレクト後に実行するつもりのないコードが実行されるのを防ぐために、リダイレクトの直後に return ステートメントを追加する必要がありました。

セッション変数が失われたのは、本番環境と負荷がかかった状態でのみ発生しました (開発やテストでは発生しませんでした)。これが私の問題を解決した理由についての私の理論は、Response.Redirect (default/true) が実行中のスレッドを強制的に終了させるということです。中断されると、それら (セッション オブジェクト) が失われる可能性があります。

于 2013-06-26T22:22:41.167 に答える
0

また、フォーム認証セクションでタイムアウトを設定する必要があります(デフォルトでは30分)

http://weblogs.asp.net/scottgu/archive/2005/11/08/430011.aspx

于 2010-06-02T00:41:16.220 に答える