1

これは私にとって非常に奇妙なものであり、私はしばらくの間それと戦ってきました。私は本当に誰かが助けてくれることを願っています。

私はかなり典型的なMVC3Webサイトを持っていますが、IEとFirefoxでのみこの問題が発生しているようです。Chromeはうまく機能します。私にとって幸運なことに、現在、当社のクライアントの大多数はChromeを使用しています。

問題は一見ランダムな時点にあり、リンクをクリックするとブラウザが自動的にアカウント/ログオフアクションにリダイレクトし、そこから明らかにログインページに戻ります。その後、このリンクは同じ動作を続けます。

今日はそのリンクが機能しますが、明日は機能せず、他のすべてのリンク(または大多数-一度にこの問題を発生させる問題のあるリンク以上のものはありません)が問題ないため、「一見ランダム」と言います。サーバー/開発環境を再起動すると問題が解決する場合もあれば、解決しない場合もあります。ブラウザはLogOffにリダイレクトし続けます。

リファラーURLを確認しようとしましたが、参照されているコントローラー/アクションに到達しません。(アクションにブレークポイントを設定すると、ブレークポイントが失われ、次に到達するポイントはLogOffアクションになります)

LogOffアクションでスタックトレースを見ると、アプリケーションがどこから来たのか情報がわかりません。このページで提案されていることも試しました:ASP.NET MVCへのスタックトレースの投稿ですが、LogOffアクションにリダイレクトされる理由がわかりません。

LogOffを押す前にブレークポイントをヒットさせることができると思われる唯一の場所は、Global.asaxのApplication_BeginRequestですが、それ以降はどこに行くのかわかりません。

私の推測では、ASPNET Authは、ユーザーが認証されなくなったと判断し、LogOffアクションにリダイレクトします。問題は、ASPNET Authに関連付けられたCookieがすべてまだ存在し、データが含まれていて、まだ有効期限が切れていないことです。

とにかく、私は問題について十分な情報を与えたことを望みます。

前もって感謝します。

[編集]

OK、それで私は一歩近づいたかもしれません。このリンクに出くわし、global.asaxのApplication_AuthenticateRequestで何が起こっているかを確認しました。

リンクをクリックすると、Application_AuthenticateRequestが3回アクセスされる理由がよくわかりません。リンクが機能する場合(私はそれをたどることができ、ログアウトしません)、.ASPAUTHcookieの値は同じままです。ブレークポイントと監視を追加してこれを確認しました

HttpContext.Current.Request.Cookies[".ASPXAUTH"].Value

リンクが機能しない場合、最初にCookieに値が設定され、その後2回はnullになります。したがって、ASPXAUTH cookieがnullであるため、システムは自動的にLogOutアクションにリダイレクトします。

彼らがリンクに投稿した解決策を検討する場合、これが私に当てはまるかどうかはわかりません。私の知る限り、暗号化されたCookieはまだ小さく(数百文字の長さのように)、4096バイトに近くありません。また、壊れたリンクをテストしたとき、私は3つのCookieしか使用しておらず、常に最大5つのCookieを使用しています。

何か案が?

4

1 に答える 1

2

OK、それで私はクッキーが期限切れになることについての予感がありました。そこで、Forms AuthenticationでCookieを(強制的に)維持する方法があるかどうかを調べたところ、http://www.codeproject.com/Articles/221889/How-to-Generate-Machine-Key-in-にたどり着きました。 IIS7

この理論をテストできる唯一の方法は、サイトを通常どおりに動作させ、デバッグし続けることでした。(そのため、この回答を投稿するのに非常に時間がかかりました。)このソリューションを導入してから、問題は解決したようです。

興味深いことに、私は先日、20年の開発経験を持つアーキテクトに私の問題について話しました。彼は私のコードを見て、これがフォーム認証コードのバグであると確信しています。

これが私と同じ問題を経験している何人かの人々に役立つことを願っています。

于 2013-01-15T15:07:59.517 に答える