4

ASP.NET アプリケーションに問題があり、頭がおかしくなりました。

ユーザーが一定期間ページを非アクティブのままにしておくと、セッションがタイムアウトになり、セッション変数が解決できないためにエラーがスローされました (とにかくこれをエラー トラップしますが、これは問題ではありません)。セッション タイムアウトの半分が経過した後に非表示のポストバックを実行する「defribulator」をコーディングしましたが、これは正常に動作するように見えました。しかし、今朝、他の開発者の 1 人がタイムアウトを経験しました - これはどのように可能ですか?

さらに調査すると、フォーム認証のタイムアウトを超えたときに問題が発生すると思います-デフリビュレーターが(明らかに)セッションを維持していても。指定されたタイムアウト期間の半分が経過した後にポストバックが発生した場合にのみ認証チケットが再発行されることを読みましたが、タイムアウト期間の後半にデリブがリクエストを発行するため、これは問題になりません。再発行じゃないの?

認証タイムアウトを 8 時間程度に設定することで問題を回避できると思いますが、それでは不十分な修正です。

誰でもこれに光を当てることができますか?

前もって感謝します

[2008 年 11 月 24 日編集] ログ ファイルを確認すると、理解が深まり、混乱することがわかりました。非アクティブ状態が 10 分間続いた後に除細動器が起動するのを確認できますが、Session_Id は常に一貫しているように見えますが、フォーム認証チケット ID が変更されます。変更されるかどうかはわかりません。現在、テスト計画を策定中であり、完了したら投稿します。これまでにフィードバックを提供してくれたすべての人に感謝します。

[2008 年 11 月 24 日編集] うーん、困惑しています。defrib の実行時 (ID の変更時) に認証チケットが再生成され、セッションが維持されます。それはサーバーの問題でしたか - わかりません。私は以前にこの問題を経験したことがありますが、その根底にたどり着くことはなく、非常にイライラします-確かにこれほど難しいことではありません. アプリケーションの他の側面に取り組まなければならないので、当分の間、これを削除する必要があります。この問題を回避するためにコードを作成する必要がありますが、これは顧客のサイトでは発生しない可能性があります。

皆様のご意見をお寄せいただきありがとうございます。何か進展があれば、ここに投稿します。

4

4 に答える 4

6

これは、iis がアプリケーション プールをリサイクルまたは終了するときにも発生する可能性があります。

フォーム認証のトラブルシューティングを確認してください。クライアントが Cookie を失った可能性があります。

認証チケットを手動で生成する場合は、web.config ではなくコードでタイムアウトを設定する必要があります。

于 2008-11-21T15:01:13.903 に答える
1

問題の原因となっているアプリケーション プールまたはワーカー プロセスのリサイクルを確認しましたか?

于 2008-11-21T19:33:32.790 に答える
1

明白なことを述べるつもりはありませんが、

  1. Session と FormsAuthentication のタイムアウトは同じ値に設定されていますか?
  2. slidingExpirationに設定されていtrueますか?
于 2008-11-21T15:02:56.783 に答える
0

応答してくれてありがとう: web.config で、slidingExpiration を明示的に true に設定しましたが、効果はありません。

タイムアウト値は次のとおりです。 セッション: 20 分 FormsAuthentication: 60 分

セッション タイムアウトをそのままにして、テストのために FormsAuthentication を 12 分に減らしました。デリブは 10 分ごとに「ping」を実行します。ページを 14 分間非アクティブのままにしてからボタンをクリックすると、#edit: という問題が発生しますが、毎回そうであるとは限りません!#.

于 2008-11-21T15:09:58.173 に答える