Как вызвать статический обработчик файлов из обработчика HTTP в IIS7 и ASP.NET 4.0? - PullRequest
1 голос
/ 24 января 2011

Я создаю собственный обработчик HTTP для автоматического создания файла и хочу, чтобы IIS7 обслуживал текущий запрос как обычный статический файл, потому что мне нужно использовать IIS и файл web.config для управления настройкой сжатия и любым другим заголовком HTTP текущего запрошенного файла .

Я знаю. в ASP.net есть внутренний класс с именем [StaticFileHandler] [1]. Но я не могу получить к нему доступ. Или у вас есть другой способ работать так. [1]: http://msdn.microsoft.com/en-us/library/ms404287.aspx

Ответы [ 2 ]

4 голосов
/ 24 января 2011

Должно быть довольно легко скопировать StaticFileHandler

  1. Скачать Отражатель
  2. Open System.Web
  3. Поиск StaticFileHandler
  4. Открытый метод ProcessRequestInternal ()
  5. Открытый метод SendFile ()

Скопируйте нужные вам биты, в основном все сводится к следующему методу:

context.Response.TransmitFile(physicalPath, offset, length);
0 голосов
/ 14 февраля 2012

Этот пост в блоге описывает, когда будет использоваться StaticFileHandler:

, если вы не изменили какие-либо заголовки (например, кеширование) и еще не записали что-то в поток ответов , а поток ответов не имеет filter (например, сжатие), и вы запускаете in-process в IIS6, затем запрос передается обратно в IIS для обработки.

Насколько я тестировал, это также верно для IIS7. Я не совсем уверен, как, но если вы не обрабатываете определенный запрос в своем собственном обработчике, он должен быть передан в IIS. Кто-нибудь может это подтвердить?

По крайней мере, следуя приведенным выше советам, сработали для моих статических файлов.

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