ASP.NET VirtualPathProvider с проблемой статических файлов - PullRequest
8 голосов
/ 07 августа 2011

Я использую IIS 7.5 в Windows 7. В моем приложении ASP .NET используется VirtualPathProvider.Большинство файлов (aspx-страниц) возвращаются и отображаются в порядке моего VirtualPathProvider.Статических файлов (css / images) нет.Они выдают ошибку HTTP 404, если я пытаюсь перейти к ним напрямую (или если на них ссылается моя виртуальная страница aspx)

Я подтвердил, что в моем файле web.config зарегистрирован правильный обработчик для статических типов файлов.

Что странно, так это:

  1. Если я пытаюсь перейти к не виртуальному GIF-файлу (который фактически существует в файловой системе в корне веб-сайта), он рендерится нормально.

  2. Если я запускаю с использованием WebDev в Visual Studio вместо IIS, виртуальные файлы GIF отображаются нормально.

  3. При отладкеВ режиме VirtualPathProvider.GetFile я могу ВИДЕТЬ мой VirtualPathProvider, возвращающий совершенно правильный экземпляр моего виртуального gif-файла, прямо перед тем, как страница возвращает ошибку 404 ... так что я знаю, что мой VirtualPathProvider работает очень хорошо.

ПРИМЕЧАНИЕ: когда я говорю IIS, я не имею в виду развернутую среду.Я просто имею в виду переключение настроек проекта на использование IIS вместо WebDev.

Есть идеи?

Спасибо.

1 Ответ

11 голосов
/ 09 августа 2011

... и ответ :

Проблема, с которой я столкнулся, особенно при отображении маршрутизации, заключается в том, что даже при сопоставлении с подстановочным знаком ASP.NET мои статические файлы заканчиваются кодом ошибки 404, потому что маршрутизация перехватывает их, отправляя запросы. к обработчику MVC, и маршрут не найден. Сбой.

Итак, как примечание для себя (и всех, кто делает что-то подобное), вот что я нашел, что вам нужно сделать, чтобы ваш VPP обслуживал статические файлы.

Сначала необходимо получить нужные статические типы файлов, сопоставленные с ASP.NET ...

...