Обработка статических файлов через HttpModule в ASP.NET - PullRequest
2 голосов
/ 13 июня 2009

У меня есть статические файлы в папке сайта, но мне нужно проверить разрешения для каждого файла. Я решил использовать HttpModule для этих целей.

ASP.NET получает все http-запросы (я использовал сопоставление с подстановочными знаками) и

Алгоритм следующий:

  1. HttpModule получает запрос
  2. HttpModule проверяет разрешения
  3. Если доступ запрещен, то ответ «Запрещено». Если все в порядке, то метод httpModule просто возвращает.
  4. DefaultHttpHandler автоматически используется для обработки запроса на статические файлы

Проблема в том, что DefaultHttpHandler недостаточно эффективен (он не использует файловый кеш и т. Д.). Но IIS (без ASP.NET) очень хорошо работает со статическими файлами.

Все, что я хочу, это разрешить IIS обрабатывать статические файлы после моих проверок. Есть ли способ реализовать это?

Ответы [ 2 ]

2 голосов
/ 13 июня 2009

Если вы используете IIS7, тогда да, это довольно просто. В интегрированном режиме все запросы проходят через управляемый конвейер. Позвольте IIS обслуживать файлы, но добавьте HttpHandler для проверки. Или вы можете использовать один из методов авторизации, предлагаемых ASP.NET.

1 голос
/ 18 февраля 2010

У меня есть решение, которое можно использовать для потоковой передачи файла в IIS 6. Оно выполняет все полезные функции, такие как возобновляемые загрузки, кэширование на стороне клиента (etag & expires) и кэширование на стороне сервера.

http://code.google.com/p/talifun-web/wiki/StaticFileHandler

Расширение должно быть достаточно легким, чтобы включить авторизацию перед обработкой файла.

...