У меня есть приложение ASP.NET, изначально развернутое на .Net 1.1 Framework на сервере Windows 2000, которое я сейчас использую на Windows 2008 Server с использованием 2.0.50727. Мы используем тильду (~) для определения абсолютного пути во многих областях приложения, и это работает для таких вещей, как элементы управления asp: hyperlink (с тегами сервера run-at), но для наших связанных элементов управления сеткой данных, которые используют HyperLinkColumns для создания ссылки на основе значений идентификаторов, возвращаемых из нашей базы данных, тильда записывается на страницу.
Этот код:
HyperLinkColumn oLink = new HyperLinkColumn();
oLink.DataNavigateUrlField = "IdField";
oLink.DataNavigateUrlFormatString = "~/Here{0}.aspx";
выводит это на страницу:
<a href="~/Here171201.aspx">
Что изменилось между версиями IIS или .NET Framework, может привести к тому, что эта функция перестала работать? Тильда была определенно исправлена в 1.1 - у меня точно такой же код, развернутый на дюжине серверов 1.1 Framework в нашей организации. К сожалению, класс, который устанавливает DataNavigateUrlFormatString, не имеет доступа к странице, поэтому мне придется выполнить некоторые действия, чтобы вставить работу Page.ResolveUrl ...