ASP.NET中的虚拟链接给出了404错误

时间:2017-05-10 16:50:35

标签: asp.net visual-studio

我注意到一些奇怪的东西。 所以通常在ASP.NET中如果你在一个url的开头放置一个〜,这个符号代表了网站的根目录。

它适用于我在.aspx页面上的所有链接,除了出于某种原因的链接,指向位于Account文件夹中的页面,其中包含Identity的模板页面。

所以点击此链接会给我一个404错误,asp.net通知我所请求的网址是

  

/~/Account/Login.aspx

显然它在这种情况下不起作用,因为文件系统中没有名为〜的文件夹。但为什么它不起作用?

现在如果我删除〜/符号,链接将工作ONCE,但如果点击两次,浏览器将尝试导航到/Account/Account/Login.aspx,这当然会引发另一个404错误。

enter image description here

每次用户点击该链接时,我该怎么做才能使他进入Login.aspx页面?

1 个答案:

答案 0 :(得分:2)

根据您在评论中提供的代码的屏幕截图,您的实际代码为:

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

就网址而言,此处没有~路径。有~Account路径。一言一行。这当然不存在。

可以使用~路径来指示应用程序的根目录,但您需要将其保留为自己的路径:

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

此外,您可能需要明确告诉框架为此应用服务器端处理:

<a href="~/Account/Login.aspx" runat="server">Login</a>

因为如果它按原样将内容发送到浏览器,那么浏览器就不知道如何处理~路径,这只是有意义的服务器端。