我正在使用一个Response.Redirect("login.aspx");
自从我搬家以来login.aspx
to my Account
子文件夹中,我尝试了以下代码,但它不起作用。
Response.Redirect("Account/login.aspx");
尝试重定向到的 URL:
http://localhost/BuzzEnhance/Account/Login.aspx
完整代码是:
public partial class BuzzMaster : MasterPage
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
if (Session["Username"] != null)
{
username.Text = Session["Username"].ToString();
}
else
{
Response.Redirect("Account/Login.aspx");
}
}
}
}
另一件事是默认页面和登录页面都使用相同的母版页。
您的问题是您正在从 MasterPage 进行重定向并使用相对路径。
当您使用相对路径时,它将相对于绑定到母版页的内容页的位置,not相对于母版页的位置。
您的重定向至:
/BuzzEnhance/Account/Account/Login.aspx
几乎可以肯定来自帐户文件夹中绑定到母版页的内容页。例如,如果您的登录页面 (/BuzzEnhance/Account/Login.aspx) 本身绑定到该母版页面,它将重定向到相对路径Account/Login.aspx
,这将解决/BuzzEnhance/Account/Account/Login.aspx
,正是您所看到的。
最好的解决方案是@abatishchev 的答案 - 使用相对于应用程序根目录的路径~/Account/Login.aspx
.
但是,如果正如我怀疑的那样,您的 Login.aspx 页面绑定到同一个母版页,这会给您带来另一个问题。每次访问Login.aspx时,它都会执行母版页中的重定向代码,从而导致无限循环,直到超时。
一种解决方案是避免将 Login.aspx 页面绑定到该母版页,或者添加一些条件代码,以便您在 Login.aspx 页面上时不会重定向。
尽管更好,但如果您使用表单身份验证并让它以标准方式管理登录页面的重定向,则根本不需要执行重定向。如果你想显示用户名,你可以使用HttpContext.Current.User.Identity.Name
- 或使用 ASP.NET 登录控件之一:LoginStatus
, LoginName
, ...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)