0

さて、私はこれに完全に困惑しています。これはシナリオasp.net mvc3 Webアプリケーションで、かなりの数か月間正常に動作していますが、新しい機能を備えたパッチと新しいリリースを毎週行っています。コードベース自体は、2 つの別個の iis7 Windows r2 サーバーで実行されます。これらのサーバーの 1 つは、標準のアプリ プール ID (ネットワーク サービス) を使用しません。ファイル サーバーからいくつかのファイルをプルするため、特定のユーザーがいます。したがって、そのディレクトリから追加/削除する特定の権限が必要です。

このサーバーでは、IE9 で 99% の確率でフォーム認証に狂ったように振る舞い始めました。1 回か 2 回はクロムでやらなければなりませんが、chome/ff は通常問題なく動作します。

問題は、ログインして別のページに移動するとすぐに、移動したオブジェクトで応答し続け、ログイン ページに再度リダイレクトされることです。(ログイン時にこれを行うこともあります)ただし、セッションは引き続き有効です。これは、テンプレートの一部として、ユーザー認証に基づくメニュー項目が次のような呼び出しで表示されるためです。

Context.User.IsInRole(xxxx)
Request.IsAuthenticated

私はそれをいじりました.Cookieセッションは問題ないようです.すべてが適切に設定されています.

ただし、完全な iisreset を実行すると、ie9 は約 5 分間動作し、その後はすべての要求で失敗し、ログイン ページにリダイレクトされます。

Web アプリケーションで iframe をまったく使用しておらず、web.config の設定が

<sessionState mode="InProc" timeout="80" />
<authentication mode="Forms">
  <forms loginUrl="~/Account/LogOn" timeout="40" slidingExpiration="true" cookieless="UseCookies" />
</authentication>

時刻同期がチェックされ、クライアントとサーバーの両方が 1 秒以内にずれています。

そのため、この段階で行き詰まっており、さらにトラブルシューティングを行うためにどこに行くべきか、または他に試すことができることはわかりません。必要に応じて、サーバーをリモートでデバッグできます。

開発ボックスでローカルにテストしても、問題は見られません。

ありがとう、キャメロン

4

2 に答える 2

1

問題が解決しました。アプリプールのワーカープロセスの数を2に設定したので、2つのワーカープロセスのどちらが検証済みのフォームCookie /セッションを持っているかについては、幸運なことになりました。

1に戻し、アプリケーションは期待どおりに動作します。ただし、セッション処理を完全に書き直してデータベースに保存するので、このワーカープロセスを4程度に増やして、アプリをより効率的にすることができます。

于 2012-06-11T23:57:49.450 に答える
0

を使用している場合は、以下をFormAuthenticationTicket確認してください。

FormsAuthenticationTicket authTicket = new
                           FormsAuthenticationTicket(1, //version
                           username, // user name
                           DateTime.Now,             //creation 
                           DateTime.Now.AddDays(5), //<--- THIS  Expiration 
                           remember, //Persistent
                           userdata);
于 2012-06-08T05:06:18.460 に答える