代码之家  ›  专栏  ›  技术社区  ›  Chris

Asp.Net窗体身份验证重定向到…/myapp/默认.aspx而不是…/myapp/

  •  1
  • Chris  · 技术社区  · 14 年前

    身份验证后,asp.net将我的用户重定向到…/myapp/默认.aspx而不是…/myapp/

    有办法解决这个问题吗?我认为这有点难看,更不用说多余的包含额外的默认.aspx在url上。

    我试着把下面的代码放到我的默认.aspx.cs页面加载函数,但它会导致重定向循环,因为它无法区分用户是否正在访问myapp/或myapp/默认.aspx:

    if (Request.RawUrl.ToLower().EndsWith("/default.aspx"))
      Response.Redirect("./");
    

    6 回复  |  直到 14 年前
        1
  •  6
  •   CRice    14 年前

    如果您使用的是登录控件,请自行决定重定向将如何进行。 使用登录控件的事件(我认为它是Authenticate)并:

    if (Request.QueryString["ReturnUrl"] != null)  
    {  
        FormsAuthentication.RedirectFromLoginPage("someuserid", false);  
    }  
    else  
    {  
        FormsAuthentication.SetAuthCookie("someuserid", false);  
        Response.Redirect("~/SomePage.aspx");  
    } 
    
        2
  •  1
  •   Kasey Speakman    14 年前

    解决这个问题最简单的方法就是从web.config文件

    <authentication mode="Forms">
        <forms ... defaultUrl="default.aspx" ... />
    </authentication>
    

    当你访问www.yourwebsite.com/myapp,返回的url将为“/myapp/”,登录后将重定向回“/myapp/”。如果您像上面那样使用defaultUrl,它将重定向到“/myapp”/默认.aspx". 实际上,我在网站的根目录上进行了试验,但我认为对于子目录也是如此。

        3
  •  0
  •   Jerod Houghtelling    14 年前

    您需要查看IIS中设置的默认页面。

        4
  •  0
  •   x0n    14 年前

    这不是多余的重定向。

    -奥辛

        5
  •  0
  •   ramazan polat    14 年前

    实际上没有像这样的文件 "./" 为web服务器处理。必须有一个默认的文件将被提供给客户端。因为没人想打字 "blabla.com/index.aspx" 而不是 "blabla.com" . 您的问题是如何选择要作为默认页调用的页。

    在IIS中,右键单击网站并转到“属性”。

    有一个选项卡,其中包含“默认页面”顺序。一定有几个网页像索引.htm, 默认.aspx等等。更改这些文件名的顺序。要调用的页面必须位于顶部。

    PS:您的登录页面和登录页面是同一页面!所以它将被称为冗余!

        6
  •  0
  •   Geno    13 年前

    我想最终的结果是我不得不将我的登录页面重命名为soemthing else(登录.aspx)