2

好的,我们大多数人在将 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];
}

然后我可以使用localHost变量并将我的路径附加到它。

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

谢谢,

4

3 回答 3

6

我不太确定您要实现什么,但是您可以使用波浪号 ( ~) 来引用 Web 应用程序的根,这应该可以解决您的问题。

string url = ResolveUrl("~/aboutus.apsx");

ASP.NET 应用程序将自行确定是否~应该是localhostlocalhost:34534someserver.net/Deep/Path其他任何内容。

于 2012-10-03T00:02:41.830 回答
1

表现良好的应用程序的工作是通过配置参数或应用程序在任何主机和路径上工作。找出程序/脚本本身和主机名的路径(之间的位)应该不会太难。在大多数情况下,脚本/程序只能使用相对路径,网络服务器会自动为您添加其他位......所以不需要编写它。

于 2012-10-03T00:06:54.190 回答
0

也许另一种选择是创建一个链接或我称之为目标文件夹的“伪路径”。例如,您创建一个指向文件夹“MyApp”的链接“TheirApp”(或相反):

TheirApp --> MyApp

MyApp --> TheirApp

或者您可以在适当的子文件夹中这样做:

My/Path/MyApp --> Their/Path/TheirApp

Their/Path/TheirApp --> My/Path/MyApp
于 2021-06-17T19:45:28.560 回答