当页面链接到自身时,ReturnURL搞砸了

时间:2015-07-02 05:10:09

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

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

我有一个导航栏,其中包含指向所有相关页面的链接,具体取决于用户是否已登录。 假设他在login.aspx页面并再次点击指向/login.aspx的链接,则返回网址变为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>

2 个答案:

答案 0 :(得分:2)

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

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

致:

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

你也可以尝试这个:

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

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

<a href="Register.aspx">

或者试试这个:

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

或以其他方式整理文件夹。

答案 1 :(得分:0)

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

  

你有很多选择:

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

  2.   
  3. 您还可以使用..将您带到所需的位置,因为它会导航回文件夹结构,如:../Pages/AboutMe.aspx

  4.   
  5. 您可以创建一个辅助方法,将有效的根返回到Pages文件夹,图像,Javascript等......

  6.   
  7. HttpRequest.ApplicationPath将获取您可用于构建的服务器上的虚拟应用程序的根路径。

  8.         

    有关Pathing选项的更多信息,请阅读MSDN上的这篇文章:

         

    ASP.NET Web Project Paths