由于IIS中的“默认文档”,必须两次登录到asp.net应用程序

时间:2012-07-26 08:31:49

标签: asp.net iis login default-document

以前,我已将 login.aspx 添加到IIS中的默认文档部分。

但是,当有人访问该应用程序时,需要登录两次。第一个不会说任何错误消息或没有重定向到应用程序中的下一页。第二个实际上会将用户重定向到预期的页面。并且用户两次都使用正确的凭据。

只要我从IIS中的默认文档部分删除 login.aspx ,用户就会提供应用程序的完整链接(〜/ login.aspx ),问题消失了,因为它只需要登录一次。

有谁知道为什么会这样?

3 个答案:

答案 0 :(得分:1)

为了解决此问题,在默认文档的Page_Load事件中,必须检查以下内容:

if (this.User.Identity.IsAuthenticated)
{
    Response.Redirect("somepage.aspx");
}

来源:asp.net Form Authentication change .net 2 to .net4

答案 1 :(得分:0)

您是否已将索引页设置为默认值并显示?

根据您的稀缺信息,我可以找到一个(可能很多)解释:

首先你到了yoursite.com(没有指定login.aspx)它会在幕后重定向到login.aspx但是url保持不变。当您从login.aspx提交时,它可能会转到其他(现有)页面,该页面将用户重定向到login.aspx(这次重写URL)。

如果您想要更好的解释,则需要提供更多详细信息

答案 2 :(得分:0)

在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.

}