如何处理Localhost中的相对路径和绝对路径

Tar*_*rik 2 .net c# url relative-path absolute-path

好的,我们大多数人在将它们发布到生产服务器之前,在我们的localhost中开发和测试Asp.NET Web应用程序.但对我来说,localhost很痛苦,因为我无法正确地获得绝对路径.因为我可以说我的应用程序位于http://localhost/MyApp/我无法正常获取主机.我可以使用几个代码来获取它但我喜欢使它更通用,所以每当其他开发人员将相同的应用程序放在另一个位置时http://localhost/TheirApp,那么它应该可以正常工作.

示例问题:

每当我使用这样的绝对路径时/aboutus.aspx,它会导致这种情况http://localhost/aboutus.aspx并省略MyApp.如果我使用相对路径,那么它变得http://localhost/MyApp/IamHere.aspx/aboutus.aspx相当令人不安.

因此,如果Request.Url.AuthorityRequest.Url.Host将返回,http://localhost/MyApp那么我们可以使用这些添加我们的URL并找到一个很好的解决方案.

替代解决方案:

我能做到这一点:

if(Request.Url.Host.StartsWith("localhost"))
{
    string[] segments = Request.Url.AbsolutePath.Split("/");
    var localHost = Request.Url.Authority + "/" + segments[0];
}
Run Code Online (Sandbox Code Playgroud)

然后我可以使用localHost变量并将其路径追加到它.

但我想知道你们是如何处理这样的问题的?

谢谢,

dee*_*see 6

我不太确定你想要实现什么,但是你可以使用tilde(~)来引用web应用程序的根目录,这应该可以解决你的问题.

string url = ResolveUrl("~/aboutus.apsx");
Run Code Online (Sandbox Code Playgroud)

ASP.NET应用程序将找出自身是否~应该localhost,localhost:34534,someserver.net/Deep/Path或其他任何东西.