これは私にとって非常に奇妙なものであり、私はしばらくの間それと戦ってきました。私は本当に誰かが助けてくれることを願っています。
私はかなり典型的な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を使用しています。
何か案が?