問題がありました (asp.net 3.5): https://mypage.netに移動すると、 https ://mypage.net/Login.aspx?ReturnUrl=%2fにリダイレクトされ、ログインできませんでした ( ReturnUrl の =%2f)。
これを解決するために、global.aspx Application_BeginRequest を変更しました。
protected void Application_BeginRequest(object sender, EventArgs e)
{
// redirect user from http to https
if (!Request.IsLocal && !Request.IsSecureConnection)
{
string redirectUrl = Request.Url.ToString().Replace("http:", "https:");
Response.Redirect(redirectUrl);
}
// I HAVE ADDED THESE LINES!!!!!!!!!!!!!!
if (Request.AppRelativen aCurrentExecutionFilePath == "~/")
HttpContext.Current.RewritePath("Login.aspx");
}
今では完璧に機能しているように見えますが、そうではありません。
問題は、 https ://mypage.net/QAからアクセスできる別の仮想アプリケーションがあることです 。 https://mypage.net/QA/login.aspx を直接入力する と、すべて問題ありません。
しかし、https: //mypage.net/QA と入力すると、「仮想パス '/Login.aspx' は別のアプリケーションにマップされていますが、これは許可されていません」と表示されます。
- https://mypage.net/QAを使用すると、エラーが発生します
- https://mypage.net/QA/を使用すると、エラーは発生せず、Login.aspx が読み込まれます
- また、global.aspx を変更しようとしました: HttpContext.Current.RewritePath("* ~/ *Login.aspx"); しかし、この場合、https: //mypage.net/qa を実行すると、アプリケーションは、仮想アプリケーションの QA ではなく、 https: //mypage.net にいると認識します。
これにどのように対処しますか?