Классический сервер ASP.MapPath не работает должным образом - PullRequest
0 голосов
/ 10 декабря 2008

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

app_name
 - app
   - includes
     - helpers
     - lib
     - partials
  - public
    - stylesheets
    - images
    - javascripts

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

Есть предложения?

Ответы [ 4 ]

3 голосов
/ 10 декабря 2008

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

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

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


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

0 голосов
/ 11 декабря 2008

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

0 голосов
/ 11 декабря 2008

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

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

Сайт Fiddler

0 голосов
/ 10 декабря 2008

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...