Как преобразовать URL-адрес в виртуальный путь в asp.net без ручного разбора строки? - PullRequest
6 голосов
/ 30 января 2009

Я видел похожие вопросы и ответы, касающиеся преобразования из виртуального в абсолютный и URL-адрес, но как я могу преобразовать URL-адрес в виртуальный путь без ручного анализа строки?

Пример:

Я хочу "http://myserver/home.aspx" преобразован в:" ~ / home.aspx "

Я понимаю, что приведенный выше пример будет простой процедурой синтаксического анализа строк, но я ищу правильное решение, которое масштабируется до изменения формата URL.

Ответы [ 2 ]

7 голосов
/ 30 января 2009

Вы можете получить большую часть из класса Uri:

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

Тогда вам просто нужно добавить ~

Однако, это может сломаться, если вы разместите в подкаталоге - я не думаю, что есть способ сделать это специально в контексте приложения, которое вы запускаете.

РЕДАКТИРОВАТЬ: Это может сделать это:

VirtualPathUtility.ToAppRelative(new Uri("http://myserver.com/home.aspx").AbsolutePath);
3 голосов
/ 30 января 2009

VirtualPathUtility.ToAppRelative Метод (String), кажется, то, что вы ищете (http://msdn.microsoft.com/en-us/library/ms150163.aspx)

Если виртуальный путь к приложению - «myapp», а виртуальный путь «/myApp/sub/default.asp» передается в метод ToAppRelative, то результирующий относительный путь приложения - «~ / sub / default.aspx». ».

...