Обработчики и расширения asp.net - я делаю это неправильно? - PullRequest
0 голосов
/ 26 апреля 2009

У меня есть требование к моему новому проекту обслуживать некоторые «скрытые» активы (фактически просто спрятанные в каталоге App_Data) после определенной даты. До этого они должны вести себя так, будто их там нет.

Я уже сотню раз делал подобные вещи с объектом Page, но когда я начал работать над этим, я подумал о том, чтобы посмотреть на обработчики. Никогда не работая с ними (и немного запуганные ими), я был счастлив, обнаружив, что они обслуживают мои файлы XML и JPG без издержек на весь класс Page. Я уже счастлив, что обдумал это. Я написал его для работы с такими функциями, как «MyHandler.ashx? Secretfile = blah.xml», и он отлично работал.

Затем я начал изучать обработку специальных расширений, чтобы обработчик получал запрос на "blah.xml.secret" и возвращал blah.xml после проверки даты. Несколько огней погасли в моей голове, и я переработал код, чтобы он справился с этим делом. Сработало (в IDE)! Я был очень взволнован.

Получение его на dev-сервере (IIS) было немного другим: мне пришлось зарегистрировать .secret как тип .NET (ничего страшного), и он все еще не работал, пока я не снял флажок «проверка файла существует» флажок. (Очевидно, что blah.xml.secret не существует: blah.xml существует, но не в том месте, о котором его просят, а только в защищенном каталоге App_Data.) Это не так уж и много, но теперь мое умное решение основано на двух реализациях. детали со стороны IIS.

Итак, мой вопрос: это предполагаемое использование обработчиков в asp.net? Я искажаю это до неузнаваемости? Мне кажется, что я видел, как сайты делали подобные трюки в прошлом, но, с одной стороны, я пытаюсь сделать изменения IIS слишком сложными. В моих исследованиях по этому вопросу я не нашел руководства по использованию slam dunk 1-2-3 по использованию обработчиков, включающих такой пример, поэтому я подумал, что, возможно, я злоупотребляю этим или поступаю неправильно.

1 Ответ

2 голосов
/ 26 апреля 2009

Да, вот как это работает. (В Windows Server 2008 существует небольшая вероятность, что вы можете выполнить настройки из файла web.config, чтобы вам не пришлось ничего менять в IIS.)

Если вы используете расширение, которое еще не зарегистрировано для обработки ядром ASP.NET, вы должны зарегистрировать его. Если вы используете расширение, которое уже обрабатывается ASP.NET, например .aspx, вам не нужно ничего регистрировать в IIS. (Когда вы запускаете его на встроенном веб-сервере в Visual Studio, все уже обрабатывается ASP.NET, поэтому он там работает.)

...