Использование Url.Content на странице WebForms неправильно разрешает тильду
Так что давным-давно мы добавили MVC 1.0 на существующий сайт ASP.NET 2.0 WebForms, и во время этого обновления мы сделали MVC UrlHelper доступным для нашего существующего кода WebForms. Это означало, что в нашем коде WebForms мы могли бы делать такие вещи как:
<%= Url.Content("~/this/is/nice") %>
вывести URL
mysite.com/this/is/nice
это было приятно и прекрасно работало.
Перенесемся в более поздние времена, и мы хотим переместить наше приложение в новый дом (на новые серверы), и вышеперечисленные функции теперь работают не так, как сейчас:
<%= Url.Content("~/this/is/nice") %>
сейчас выводит
mysite.com/webforms/location/this/is/nice
как будто физическое местоположение является корнем приложения - и я понятия не имею, почему и не удалось воссоздать его на моей машине для разработки.
Кто-нибудь там, что может быть причиной этого? Я застрял в этой проблеме в течение последних нескольких дней, и у меня почти нет идей. Единственный проблеск надежды, который у меня есть сейчас, заключается в том, что проблема возникает в среде моего коллеги, поэтому мы определенно можем воссоздать ее.
Обновление: это происходит не на всех страницах WebForms - только на некоторых, и единственная отличительная черта, которую я заметил до сих пор, это то, что это происходит на странице, где происходит некоторое переписывание URL.
1 ответ
Я бы перешел от использования метода MVC:
<%= Url.Content("~/this/is/nice") %>
С одним из методов Web Forms, который делает то же самое:
<%#ResolveClientUrl("~/this/is/nice")%>
<%#ResolveUrl("~/this/is/nice")%>
ResolveUrl возвращает путь относительно корня сайта, тогда как ResolveClientUrl возвращает путь относительно текущей страницы.