Как преобразовать 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".