.net HttpHandlers передает запрос по конвейеру до IIS6
-
22-07-2019 - |
Вопрос
Есть ли способ для обработчика Http передать запрос обратно по конвейеру в IIS 6 и позволить ему обработать запрос?
Например, если у меня установлен обработчик Http для глагола = " (подстановочный знак) " Путь = & Quot; (подстановочные) .txt & Quot; р>
У меня есть файл myunformated.txt, я бы хотел, чтобы IIS 6 отправил его пользователю, если к нему не прикреплены параметры строки запроса.
Есть идеи?
Решение
Ответ на ваш вопрос - нет. Это то, что интегрированный конвейер IIS7 достигает, но его нет в IIS6.
В этом конкретном случае с помощью context.Response.TransmitFile все получится, хотя вы должны рассмотреть возможность установки типа содержимого Response, заголовков charset и control cache, что-то вроде: -
HttpResponse Response = context.Response
Response.ContentType = "text/plain";
Response.CharSet = "Windows-1252";
Response.AddFileDependency(filePath);
// Set additional properties to enable caching.
Response.Cache.SetExpires(DateTime.Now.AddSeconds(60));
Response.Cache.SetCacheability(HttpCacheability.Public);
Response.Cache.SetValidUntilExpires(true);
Response.TransmitFile(filePath);
Это в значительной степени дублирует то, что будет делать обработчик статического содержимого IIS.
Другие советы
Почему бы просто: Response.TransmitFile? - обратите внимание, что в отличие от Response.WriteFile этот файл не загружает весь файл.
Возможно, вы захотите полностью избежать этого и указать ссылку на другое имя файла. Таким образом, вы получаете все, что вы хотели от IIS - особенно возобновление загрузки.