【问题标题】:ReturnURL messed up when a page links to itself当页面链接到自身时,ReturnURL 搞砸了
【发布时间】:2023-03-02 23:47:01
【问题描述】:

我在根目录中有一个home.aspxabout.aspx,一个包含login.aspxregister.aspxmanage.aspx 的帐户文件夹。

我有一个导航栏,其中包含指向所有相关页面的链接,具体取决于用户是否登录。 假设如果他在login.aspx页面,他再次点击/login.aspx的链接,返回URL变成ReturnUrl="localhost:xxxx/Account/Account/login.aspx" 如果我现在点击register.aspx,它会变成Account/Account/Account/register.aspx

这叫什么以及如何纠正它? 我想我需要创建一个虚拟根目录之类的东西,所有地址都相对于该目录进行解析。
我的href是这样的,

<li id="RegisterLink" runat="server"><a href="Account/Register.aspx"><span class="glyphicon glyphicon-user"></span> Register</a></li>
<li id="LoginLink" runat="server"><a href="Account/Login.aspx"><span class="glyphicon glyphicon-log-in"></span> Login</a></li>

【问题讨论】:

标签: html asp.net url url-redirection returnurl


【解决方案1】:

您使用相对锚点而不是绝对锚点。 尝试改变:

<a href="Account/Register.aspx">

收件人:

<a href="/Account/Register.aspx">

你也可以试试这个:

<a href="../config2.aspx">

也许如果您删除帐户会修复它:

<a href="Register.aspx">

或者试试这个:

<a href="~/Account/Register.aspx">

或以其他方式组织您的文件夹。

【讨论】:

  • 最后一个是为我做的。 Anirugu 对我的问题的评论也适用于很多情况。
【解决方案2】:

我正在从另一个线程分享以下解决方案,这似乎也适用于我的情况(来源 https://stackoverflow.com/a/3567721/4594699

你有很多选择:

  1. 您可以使用~ 运算符对 URL 进行硬编码,该运算符为您提供根,然后从那里定义它,例如:~/Pages/AboutMe.aspx。请记住,~ 运算符仅在服务器控件和服务器代码中被识别。

  2. 您还可以使用.. 将您带到您想要的位置,因为它将导航到文件夹结构,例如:../Pages/AboutMe.aspx

  3. 您可以创建一个辅助方法来为您的 Pages 文件夹、图像、Javascript 等返回一个有效的根目录...

  4. HttpRequest.ApplicationPath 将获取您的虚拟应用程序在服务器上的根路径,您可以使用它来构建。

有关路径选项的更多信息,您应该阅读 MSDN 上的这篇文章:

ASP.NET Web Project Paths

【讨论】:

    猜你喜欢
    • 2012-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-08
    • 1970-01-01
    • 2011-08-17
    • 2010-09-05
    相关资源
    最近更新 更多