Как получить заголовки If-Modified-Since и If-None-Match в IIS при использовании какого-либо подстановочного сопоставления? - PullRequest
1 голос
/ 28 апреля 2011

У меня есть сервер изображений, который принимает URL-адреса вида

http://www.myserver.com/photo/foo/bar/baz/~120x120/crop/abc123.jpg

и динамически генерирует миниатюры на основе параметров, проанализированных в строке URL. У нас это работало в двух конфигурациях - одна путем сопоставления ошибки 404 в IIS со страницей .aspx с обработкой изображения в коде, а вторая - путем реализации IHttpHandler и добавления строки к * 1005. * раздел /photo/web.config вроде так:

<httpHandlers>
    <add verb="GET,HEAD" path="*" type="App_Code.ThumbnailHandler" />
</httpHandlers>

Мне нужно добавить некоторую поддержку для кэширования HTTP, но в обеих конфигурациях IIS молча удаляет заголовки If-Modified-Since и If-None-Match - Fiddler показывает браузер, отправляющий их на сервер, но затем они исчезают к тому времени, когда моя страница или обработчик получает доступ к коллекции Request.Headers.

Как я могу написать кусок кода, который обрабатывает произвольные, подстановочные URL-запросы, с ЛЮБЫМ расширением файла, но все еще может обращаться к заголовкам, которые я должен иметь возможность ответить 304 Not Modified, если у клиента уже есть текущая версия ресурса? Следующей моей попыткой было бы переписать его как приложение MVC, но это действительно кажется излишним.

РЕДАКТИРОВАТЬ: ОК, то, что действительно сумасшедший, это то, что если я нажму

http://www.myserver.com/photo/this/is/a/random/string/of/gibberish.aspx

(т.е. с расширением файла .ASPX) - заголовки INTACT! Но если я нажму

http://www.myserver.com/photo/this/is/a/random/string/of/gibberish.jpg

Они пропали ... есть идеи?

1 Ответ

0 голосов
/ 29 апреля 2011

Единственный обходной путь, который я нашел для этого, состоит в том, чтобы реализовать IHttpHandler, как описано выше, но затем сопоставить каждое расширение файла, которое вы 'соответствует' (в нашем случае .JPG, .PNG и .TIF), с% windir% \ Microsoft.NET \ Framework \ v2.0.50727 \ aspnet_isapi.dll в IIS. Это по какой-то причудливой причине означает, что IIS будет вызывать ваш обработчик HTTP без предварительного искажения заголовков.

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