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

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

Пример:

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

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

2 ответа

Решение

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

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

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

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

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

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

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

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

Другие вопросы по тегам