Asp.Net将身份验证重定向到... / myapp / default.aspx而不是... / myapp /

时间:2010-08-24 01:01:45

标签: c# asp.net forms-authentication

验证后,asp.net将我的用户重定向到... / myapp / default.aspx而不是... / myapp /

有没有办法解决这个问题?我认为这有点难看,更不用说在网址上包含额外的default.aspx了。

我已经尝试将以下代码放在我的default.aspx.cs page_load函数中,但它会导致重定向循环,因为它无法区分用户是否正在访问myapp /或myapp / default.aspx:

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

谢谢!

6 个答案:

答案 0 :(得分:6)

如果您使用的是登录控件,请自行决定重定向的发生方式。 使用登录控件的事件(我认为它是Authenticate)和:

if (Request.QueryString["ReturnUrl"] != null)  
{  
    FormsAuthentication.RedirectFromLoginPage("someuserid", false);  
}  
else  
{  
    FormsAuthentication.SetAuthCookie("someuserid", false);  
    Response.Redirect("~/SomePage.aspx");  
} 

答案 1 :(得分:1)

解决此问题的最简单方法是从web.config中删除defaultUrl属性

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

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

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

有一个标签,其中包含“默认页面”顺序。必须有几个网页,如“index.htm,default.aspx等”。更改这些文件名的顺序。您要调用的页面必须位于顶部。

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

答案 4 :(得分:0)

这不是冗余重定向。

为什么呢?因为当您在Web服务器上/上时,Web服务器无论如何都会将您重定向到/default.aspx。你只是让IIS做它而不是认证机制。

-Oisin

答案 5 :(得分:0)

我遇到了同样的问题。我的登录页面是default.aspx,当你点击应用程序时,重定向网址被设置为/ MyApp /.

我认为最终结果是我必须将我的登录页面重命名为soemthing else(login.aspx)