7

ユーザーから、画面を使用していて、次の要求ですぐにログイン画面に戻されるという報告と苦情が寄せられています。毎回ではなく、ランダムに発生します。Web サーバーを確認すると、アプリケーション イベント ログに次のエラーが表示されます。

イベント コード: 4005 イベント メッセージ: 要求に対するフォーム認証に失敗しました。理由: 提供されたチケットの有効期限が切れています。

私が読んだものはすべて、Web ガーデンや負荷分散について質問する人々から始まります。どちらも使用していません。私たちは、IIS6 を搭載した単一の Windows 2003 (32 ビット OS、64 ビット ハードウェア) サーバーです。これは、このサーバー上の唯一の Web サイトでもあります。

この動作によって、アプリケーションの例外が発生したり、ユーザーに表示される問題が発生したりすることはありません。ログイン画面に戻り、強制的にログインするだけです。ご想像のとおり、これはユーザーにとって非常に迷惑で非生産的です。

ルートのアプリケーションの web.config で設定したものは次のとおりです。

<authentication mode="Forms">
      <forms name=".TcaNet"
        protection="All"
        timeout="40"
        loginUrl="~/Login.aspx"
        defaultUrl="~/MyHome.aspx"
        path="/"
        slidingExpiration="true"
        requireSSL="false" />
    </authentication>

また、存在しない、または偽の場所を設定している場合、問題が発生する可能性があることも読みました. 私のパス属性はすべて有効なディレクトリであるため、問題になることはありません。

<location path="js">
    <system.web>
      <authorization>
        <allow users="*" />
      </authorization>
    </system.web>
  </location>
  <location path="images">
    <system.web>
      <authorization>
        <allow users="*" />
      </authorization>
    </system.web>
  </location>
  <location path="anon">
    <system.web>
      <authorization>
        <allow users="*" />
      </authorization>
    </system.web>
  </location>
  <location path="App_Themes">
    <system.web>
      <authorization>
        <allow users="*" />
      </authorization>
    </system.web>
  </location>
  <location path="NonSSL">
    <system.web>
      <authorization>
        <allow users="*" />
      </authorization>
    </system.web>
  </location>

私がはっきりしていない唯一のことは、認証チケットのフォーム プロパティのタイムアウト値がセッション タイムアウト値 (IIS のアプリの構成で定義されている) と同じでなければならないかどうかです。複雑化の可能性を避けるために、認証タイムアウトをセッション タイムアウト (45) よりも短く (40) する必要があるということをいくつか読みました。いずれにせよ、最後のアクションから 1 ~ 2 分後にログイン画面に移動するユーザーがいます。したがって、セッションが期限切れになることは絶対にありません。

2009 年 2 月 23 日更新: セッション タイムアウトと認証チケット タイムアウトの値を両方とも 45 に設定しましたが、問題はまだ発生しているようです。

アプリケーション内の唯一の他の web.config は、Community Server をホストする 1 つの仮想ディレクトリにあります。その web.config の認証設定は次のとおりです。

<authentication mode="Forms">
            <forms name=".TcaNet" 
            protection="All" 
            timeout="40" 
            loginUrl="~/Login.aspx" 
            defaultUrl="~/MyHome.aspx" 
            path="/" 
            slidingExpiration="true" 
            requireSSL="true" />
        </authentication>

また、Web ガーデンにいる場合を除き、これが当てはまるとは思いませんが、両方の web.config ファイルで両方のマシン キーの値が同じになるように設定しています (便宜上削除されています)。

<machineKey 
        validationKey="<MYVALIDATIONKEYHERE>" 
        decryptionKey="<MYDECRYPTIONKEYHERE>" 
        validation="SHA1" />

<machineKey 
        validationKey="<MYVALIDATIONKEYHERE>" 
        decryptionKey="<MYDECRYPTIONKEYHERE>" 
        validation="SHA1"/>

これについての助けをいただければ幸いです。これは、大量の Google 検索結果を生成する問題の 1 つであるように思われますが、これまでのところ、どれも私の状況には当てはまらないようです。

4

5 に答える 5

2

アプリケーションプールのMaximumWorkerProcessesプロパティを確認することも価値がある場合があります。メモリセッションで使用していて、最大ワーカープロセスとして複数ある場合、ユーザーの要求がセッションを認識しない別のスレッドによって処理されるため、セッションの問題を見つけることができます。

于 2009-02-24T20:13:41.230 に答える
0

1.) iis プロセスがリサイクルされる頻度を確認します。(ログをオンにして、設定を確認してください) 。デフォルトの in proc セッション ストアを使用してリサイクルすると、セッションが失われます。

2.) アプリケーションは、例外をスローする可能性のあるスレッドを生成しますか (ユーザーには表示されません)。そのような状況が存在する場合、iis はプロセスをはるかに頻繁にリサイクルするためです。

于 2009-02-19T18:36:02.920 に答える