Классический ASP Server.MapPath не работает должным образом

Сайт, над которым я работаю, создан в Classic ASP, и я стараюсь сделать это как можно лучше. Я абстрагировал его в структуру каталогов, подобную Rails:

Название приложения
 - приложение
   - включает в себя
     - помощники
     - lib
     - частичные
  - публичный
    - таблицы стилей
    - картинки
    - JavaScript

Я создал несколько Rails-подобных помощников, например:

Function ImageTag(ByVal imageFileName, ByVal altText)
  path = Server.MapPath(IMAGE_ROOT & imageFileName & ".jpg")
  ImageTag = "<img src=""" & path & """ title=""" & altText & """ alt=""" & altText & """ />"
End Function

Который используется таким образом:

<%= ImageTag("my_pic") %>

С "IMAGE_ROOT", определенным как "../public/images/" в файле конфигурации. Я занимаюсь разработкой под XP, поэтому сайт настроен как виртуальный каталог. Однако изображение не будет загружаться на веб-страницу вообще. Он отображает правильный путь к нему, потому что я могу скопировать / вставить его в свой браузер и просмотреть изображение - по какой-то причине оно просто не будет отображаться на странице. То же самое относится и к моей таблице стилей CSS - путь правильный, но страница его вообще не отображает.

Какие-либо предложения?

10.12.2008 19:32:33
Почему вы наносите на карту свой относительный путь к физическому пути, конечно, вы просто используете IMAGE_ROOT & imageFileName & ".jpg"без Server.MapPath()?
Lankymart 9.01.2014 13:58:37
4 ОТВЕТА
РЕШЕНИЕ

Fiddler - это отличный инструмент для устранения проблем такого типа. Он покажет вам звонки и ответы прямо между вашим веб-браузером и сервером. Это работает из коробки с IE, и поддержка FireFox - только настройка настройки далеко.

Я лично использовал Fiddler, чтобы отслеживать проблемы с загрузкой изображений, проблемы с CSS, проблемы с кэшированием, перенаправлять ошибки, и даже использовал его для подмены переменных URL, чтобы попытаться взломать / взломать мои сайты.

Сайт Fiddler

-1
10.12.2008 22:59:04

-Это может быть проблема с созданным HTML?
-Вы можете попробовать сделать IMAGE_ROOT абсолютным путем, например "/ public / images", а не относительным (если это возможно).
-Также вы можете просмотреть журналы IIS, чтобы увидеть, получаете ли вы 404 ошибки для изображений и CSS-файлов.

0
10.12.2008 19:39:11

Вероятно, вы столкнетесь с проблемами, связанными с серверными и веб-каталогами.

Server.MapPathдаст вам, C:\InetPub\...\public\images\my_pic.jpgкогда вы, вероятно, хотите /public/images/my_pic.jpg. Браузер не имеет возможности получить первый с вашего сервера.

Изображение должно быть доступно через ваш домен: localhost / public / images / my_pid.jpg .


Я предполагаю, что, поскольку вы можете просматривать изображение, вы разрабатываете его на той же коробке, где оно находится? Если это так, вы можете просмотреть изображение, потому что оно открывается браузером как локальный файл. Все остальные должны использовать только HTTP.

3
10.12.2008 19:46:29

Если app_name / app является корнем вашего IIS-сайта, то вы должны указать app_name / app как виртуальный каталог на вашем IIS-сайте. Так как там только статический контент, вам также не нужны разрешения для выполнения сценариев .asp.

0
11.12.2008 02:33:57