以前,我已将login.aspx添加到 IIS 的默认文档部分。
但是,当有人访问该应用程序时,需要登录两次。第一个不会说任何错误消息或没有重定向到应用程序中的下一页。第二个实际上会将用户重定向到预期的页面。并且用户两次都使用了正确的凭据。
一旦我从 IIS 的默认文档部分删除login.aspx,并且用户提供了应用程序的完整链接 (~/login.aspx),问题就消失了,因为它只需要登录一次。
有谁知道为什么会这样?
以前,我已将login.aspx添加到 IIS 的默认文档部分。
但是,当有人访问该应用程序时,需要登录两次。第一个不会说任何错误消息或没有重定向到应用程序中的下一页。第二个实际上会将用户重定向到预期的页面。并且用户两次都使用了正确的凭据。
一旦我从 IIS 的默认文档部分删除login.aspx,并且用户提供了应用程序的完整链接 (~/login.aspx),问题就消失了,因为它只需要登录一次。
有谁知道为什么会这样?
为了解决这个问题,在 Default Document 的 Page_Load 事件中,必须检查如下:
if (this.User.Identity.IsAuthenticated)
{
Response.Redirect("somepage.aspx");
}
您是否已将索引页面设置为默认并存在?
从您稀缺的信息中,我可以找到一个(可能的许多)解释:
首先,您访问 yoursite.com(不指定 login.aspx),它会在后台重定向到 login.aspx,但 url 保持不变。当您从 login.aspx 提交时,它可能会转到其他(现有)页面,该页面将用户重定向到 login.aspx(这次重写 url)。
如果您想要更好的解释,您需要提供更多详细信息
在 Global.asax 添加这些行
void Application_BeginRequest(object sender, EventArgs e)
{
if (Request.QueryString.ToString().EndsWith("ReturnUrl=%2f"))
System.Web.HttpContext.Current.Response.Redirect("~/login.aspx");
if (Request.AppRelativeCurrentExecutionFilePath == "~/")
HttpContext.Current.RewritePath("login.aspx");//This is the default page to navigate after a successful login.
}