Использование 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 возвращает путь относительно текущей страницы.

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