Скажем, у меня есть виртуальная папка/topFolder/в IIS7, и в этой папке может быть любой файл, который может отображаться в браузере (xml, html, swf, doc и т. Д.), Как правило «неуправляемые» ресурсы с точки зрения IIS). Прежде чем предоставить разрешение на открытие любого файла под папкой, мне нужно проверить некоторые переменные сеанса, чтобы узнать, имеет ли пользователь «лицензию» для подпапки и файла, о котором идет речь.Статические файлы и аутентификация в ASP.net
Я пробовал реализовать модуль с интерфейсами IHttpModule и IReadOnlySessionState, но Session всегда имеет значение null в событии AcquireRequestState, когда файл является «статическим», а не IIS (например, aspx, ashx и т. Д.).
Если я использую пользовательский HttpHandler, я получаю сеанс, но тогда мне также нужно реализовать способ отправки контента в ответ. Изменить. Поскольку пользователь не загружает файл, я просто хочу, чтобы IIS служил файлу, как это делает его StaticFileModule. Обработчик/Модуль должен быть действительно StaticFileModuleWithAuthorizationHook ...
Так что я действительно хочу сделать следующее: 1. Для запроса/topFolder/*: проверить сессию и лицензий и т.д. а) Если нормально, продолжать служить файл b) Если это не так, запрос прерывания или просто отправьте FORBIDDEN в ответ.
Надеюсь, кто-то может помочь.
Спасибо, но это немного другое. Imaginge URL http://myserver.com/topFolder/something/foo.html Я не буду его загружать, я буду обслуживать файл, но только после того, как я проверил сеанс и выполнил несколько обращений к базам данных. Это в основном открытый виртуальный каталог, который должен иметь специальную безопасность. –
В этом случае просто выполните response.writebytes и напишите файл, не устанавливайте заголовок для настройки содержимого, и все должно быть в порядке! –
Это не будет работать со случайным контентом. Если я попробую это с помощью .swf-файла, браузер не знает, как отображать, и просто отображает его как двоичные символы. Я действительно хочу, чтобы IIS отображал/обслуживал, как и после моих проверок, и не заботился о том, как браузер отображает случайный контент. –