Корень сайта IIS 6 против приложения?ResolveUrl ()? - PullRequest
4 голосов
/ 09 марта 2011

IIS 6 ASP.NET 3.5 (C # .NET)

У нас возникла проблема, когда один и тот же набор файлов ведет себя по-разному в зависимости от того, является ли он корневым веб-сайтом IIS по сравнению с приложением на веб-сайте IIS. URL-адреса, полученные с помощью ResolveUrl (), различаются, т. Е .:

<a href="<%=ResolveUrl("~/contact.aspx") %>">Contact Us</a>

Оба используют одни и те же файлы. Первый пример - это собственный веб-сайт, второй - виртуальный каталог, превращенный в приложение (под названием DSC). Оба также используют один и тот же пул приложений и одинаковые параметры конфигурации, документа и безопасности (я убедился, что в обоих IIS все параметры были одинаковыми).

Все, что было исследовано, указывает, что ResolveUrl () относится к приложению IIS, под которым находится веб-страница. Я также прочитал несколько мест, где, даже если информация не заполнена в IIS (в данном случае это так), корневой веб-сайт считается приложением. Следовательно, он должен выдавать соответствующий веб-адрес, но это не так.

Любая помощь в поиске дополнительных исследований для определения того, какие настройки / конфигурации установлены неправильно или почему ResolveUrl () не подходит для программного использования.

1 Ответ

2 голосов
/ 09 марта 2011

Проверьте это: От относительного пути к абсолютному пути в ASP.NET без использования тильды ~ .Возможно, вы захотите заменить использование тильды (~) на HttpRuntime.AppDomainAppVirtualPath.Если веб-приложение находится в корневой папке сервера, AppDomainAppVirtualPath возвращает только «/».Если веб-приложение находится в некорневой папке, оно возвращает виртуальный путь к папке без "/" в конце ( source ).

...