Относящиеся к приложению URL - PullRequest
       13

Относящиеся к приложению URL

3 голосов
/ 20 августа 2010

Я только что создал новое веб-приложение ASP.NET в VS2010 и настроил его как приложение в IIS7.

Не уверен, что это актуально, но код физически находится в папке \ myserver \ projects \ epeui \ epe (папка проектов является корнем моего веб-сайта по умолчанию). Приложение свисает с корня веб-сайта по умолчанию для этого компьютера: http://myserver/epe/. и настраивается как приложение в IIS.

Обычно я использовал URL-адреса, относящиеся к корню приложения, поэтому мои CSS-файлы находятся в / styles /, мои изображения находятся в / images /, а мои JavaScript-файлы находятся в /scripts/.

Учитывая, что приложение настроено как таковое в IIS, для доступа к моему логотипу я буду использовать /images/mylogo.png, относящийся к приложению URL.

Однако, это не работает для этого сайта; вместо этого мне нужно использовать родительские пути (../images/mylogo.png) или URL-адреса относительно веб-сайта по умолчанию (/epe/images/mylogo.png). Ни один из них не очень хорош по причинам переносимости.

Я также пытался использовать тильду, чтобы использовать URL-адреса, предположительно относящиеся к виртуальному пути (то есть корню приложения) = ~ / images / mylogo.png

Клянусь, я делал это уже тысячу раз, но где-то явно облажался ... Есть предложения?

Может ли кто-нибудь хотя бы подтвердить, что для стандартного приложения в IIS /mypage.html должно ссылаться на http://myserver/myapp/mypage.html, а не http://myserver/mypage.html?

1 Ответ

1 голос
/ 20 августа 2010

/ mypage.html сопоставляется с корнем http://myserver/mypage.html, это правильное поведение

Элемент управления ~ на стороне сервера будет отображаться в корневом каталоге приложения (поэтому <asp:HyperLink NavigateUrl="~/mypage.html"...> будет соответствовать http://myserver/myapp/mypage.html

У меня в прошлом, особенно с css и javascript файлами, приходилось использовать <%= Request.ApplicationPath %>/myPage.html. Иногда полезно определить это как глобальную переменную в global.asax.cs, чтобы вы могли использовать ее повсюду. Request.ApplicationPath в вашем экземпляре будет "/ myapp"

Я тоже много с этим боролся.

...