验证后,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("./");
谢谢!
答案 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)