2009-06-12 2 views
2

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

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

Алгоритм Построения заключается в следующем:

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

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

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

ответ

2

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

+0

Если вы используете IIS6, мне бы хотелось увидеть решение, которое не связано с проверкой прав, а затем потоковой передачи файла. – ScottE

+0

Надеюсь, мне больше не придется иметь дело с IIS6 в новых проектах;) – chris166

+0

К сожалению, я использую IIS6 – murad

1

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

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^