6

我已经看到有关从虚拟到绝对和 url 的转换的类似问题和答案,但是如何在没有手动字符串解析的情况下将 url 转换为虚拟路径?

例子:

我想将“ http://myserver/home.aspx ”转换为:“~/home.aspx”

我意识到上面的示例将是一个简单的字符串解析例程,但我正在寻找一个合适的解决方案,它可以适应 url 格式的变化。

4

2 回答 2

8

您可以从 Uri 类中获得大部分内容:

new Uri("http://myserver.com/home.aspx").AbsolutePath

然后你只需要在前面加上~

但是,如果您托管在子目录中,这可能会中断-我认为没有办法专门在您正在运行的应用程序的上下文中执行此操作。

编辑:这可能会这样做:

VirtualPathUtility.ToAppRelative(new Uri("http://myserver.com/home.aspx").AbsolutePath);
于 2009-01-29T21:51:07.767 回答
3

VirtualPathUtility.ToAppRelative 方法(字符串)似乎是您正在寻找的(http://msdn.microsoft.com/en-us/library/ms150163.aspx

如果应用程序的虚拟路径是“myapp”,并且将虚拟路径“/myApp/sub/default.asp”传递给 ToAppRelative 方法,则生成的应用程序相对路径是“~/sub/default.aspx”。

于 2009-01-29T21:52:49.543 回答