У меня есть сервер изображений, который принимает 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
Они пропали ... есть идеи?