../../../test正在提供404文件或文件夹未找到错误

时间:2017-10-17 15:49:29

标签: .net asp.net-mvc iis

我在Web服务器中托管了一个ASP.NET MVC应用程序,其URL为http://10.26.14.99/projectA,即environment1,同一个应用程序托管在另一个URL为https://projectA.test.com的web服务器中,即environment2。

现在,对于environment1,当我输入http://10.26.14.99/projectA/../../../../test时,它显示的网址为http://10.26.14.99/test,其中包含404“文件或文件夹未找到”错误,但同时适用于环境2,如果我输入{{1}然后它将URL显示为https://projectA.test.com/../../../../test,它还会将我带到预期的登录页面。

有人可以告诉我在environment1中需要做些什么来获得与environment2相同的预期结果?

2 个答案:

答案 0 :(得分:0)

在ASP .NET MVC中,您可以使用~代字号来表示路径,以表示应用程序路径。

所以你可能在你的剃刀cshtml文件中有例子。

<a href="~/test">test link</a>

您的问题是在本地测试时使用的是虚拟应用程序。因此,对于许多..而言,您将超越应用程序的路径。

请参阅here了解~在MVC应用程序中的工作原理。

或者,如果您对网址路径感到满意,则需要更改托管网站的方式,以便不从虚拟应用程序提供服务。但是,您只能为每个IP地址托管一个应用程序。

答案 1 :(得分:0)

不要在ASP.NET MVC中使用相对URL。它们会中断,因为默认的URL映射可以从不同的URL访问页面。例如,http://example.com/http://example.com/Homehttp://example.com/Home/Index都可以指向同一页面,并且从网址访问自图像和其他资源,您将需要一个资产能够从这三个访问。

最好使用网站相对网址,使用Ashley提到的波浪号(〜)。在更新版本的MVC(使用Razor版本3或更高版本)中,这些url直接支持href和src属性,但在某些情况下,您可能必须使用@Html.Content()帮助程序。

唯一的例外是CSS中的URL。可以在CSS中使用相对URL,因为CSS URL是相对于CSS文件位置的,所以它可以正常工作。