私が開発してきたアプリケーション (ASP.Net 4 / C#) は、FormsAuthentication.RedirectToLoginPage() を使用して、ユーザーがログアウト ボタンをクリックした後にログイン ページに戻します。
アプリケーションが IIS サイトのルートに配置されている場合、リダイレクトが機能しないことがわかりました。ログアウト ボタンをクリックすると、ページがリロードされます。
アプリケーションがサイト内のアプリケーション仮想フォルダーに展開されると、リダイレクトが機能します。
Respond.Redirect() も使用してみましたが、これも機能しません。サイトをゼロから再作成してみました (うまくいきませんでした)。
更新: 別のマシンでこの動作を確認できたので、1 つの Web サーバーだけではないと確信しています。
ログアウト ボタンのコード:
protected void lbLogout_Click(object sender, EventArgs e)
{
FormsAuthentication.SignOut();
Session.Abandon();
// clear authentication cookie
HttpCookie cookie1 = new HttpCookie(FormsAuthentication.FormsCookieName, "");
cookie1.Expires = DateTime.Now.AddYears(-1);
cookie1.Path = FormsAuthentication.FormsCookiePath;
cookie1.HttpOnly = true;
Response.Cookies.Add(cookie1);
// clear session cookie
HttpCookie cookie2 = new HttpCookie("ASP.NET_SessionId", "");
cookie2.Expires = DateTime.Now.AddYears(-1);
Response.Cookies.Add(cookie2);
FormsAuthentication.RedirectToLoginPage();
//Response.Redirect("~/login.aspx");
Response.End();
}
助けてくれてありがとう!