gpt4 book ai didi

c# - Response.Redirect() 重定向到子文件夹中的页面

转载 作者:行者123 更新时间:2023-11-30 13:20:22 25 4
gpt4 key购买 nike

我正在使用 Response.Redirect("login.aspx");

自从我将 login.aspx 移动到我的 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 进行重定向,并使用相对路径。

当您使用相对路径时,它将相对于绑定(bind)到母版页的内容页面的位置,不是相对于母版页的位置。

您重定向到:

/BuzzEnhance/Account/Account/Login.aspx

几乎肯定来自帐户文件夹中绑定(bind)到您的母版页的内容页面。例如,如果您的登录页面 (/BuzzEnhance/Account/Login.aspx) 本身绑定(bind)到该母版页,它将重定向到相对路径 Account/Login.aspx,它将解析为 /BuzzEnhance/Account/Account/Login.aspx,正是您所看到的。

最好的解决方案是@abatishchev 的回答——使用相对于应用程序根目录的路径 ~/Account/Login.aspx

但是,如果正如我怀疑的那样,您的 Login.aspx 页面绑定(bind)到同一个母版页,这会给您带来另一个问题。每次访问 Login.aspx 时,它都会执行母版页中的重定向代码,从而导致无限循环,直到出现超时。

一种解决方案是避免将您的 Login.aspx 页面绑定(bind)到该母版页,或者添加一些条件代码,这样当您在 Login.aspx 页面上时就不会重定向。

虽然更好,但如果您使用表单例份验证并让它以标准方式管理到登录页面的重定向,则根本不需要进行重定向。如果要显示用户名,可以使用 HttpContext.Current.User.Identity.Name - 或使用 ASP.NET 登录控件之一:LoginStatus登录名, ...

关于c# - Response.Redirect() 重定向到子文件夹中的页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8551535/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com