Почему не называют моего ihttphandler?
-
21-09-2019 - |
Вопрос
Я пытаюсь заставить пользовательского обработчика работать на конкретный URL (или набор URL) в ASP.NET 3.5.
Обработчик на самом деле еще не делает ничего значительного - он просто регистрирует запрос. Я могу опубликовать код, если кто -нибудь, это актуально, но я действительно не думаю, что его вообще вызывают. (В частности, для обычных исключений я получаю пользовательскую страницу ошибок и журнал ... здесь я просто получаю Vanilla IIS 404.)
Вот актуальная часть web.config
файл:
<system.web>
<httpHandlers>
<add verb="GET,POST" path="*.robot" validate="false"
type="CSharpInDepth.Wave.RobotHandler, CSharpInDepth"/>
</httpHandlers>
</system.web>
(Очевидно, есть и другие вещи в этом разделе, но я не считать это актуально.)
Локально, работая под сервером Dev, он работает нормально. В моей настоящей коробке я всегда получаю 404. Все под каталогом веб -сайта одинаково (воспроизводится через SVN). Это включает в себя bin
каталог, содержащий CSharpInDepth.dll
, который, как я подтвердил, содержит CSharpInDepth.Wave.RobotHandler
.
Я пытаюсь получить http://csharpindepth.com/foo.robot И просто получите 404.
Я пробовал с именем сборки, конкретными URL -адресами или с подстановками ... ничего не работает.
Я уверен, что только что пропустил какой -нибудь простой флаг где -то в конфигурации IIS, но я дул, если смогу его найти ...
РЕДАКТИРОВАТЬ: Это версия IIS 6. Попытка добавить *.ROBOT к фильтру ISAPI сейчас ...
Решение
Ну, если ящик для хостинга находится в IIS7 в интегрированном конвейере, вам нужно добавить его в другой бит конфигурации:
<system.webmodules>
....
<modules>
<add name="RobotHandler" type="CSharpInDepth.Wave.RobotHandler, CSharpInDepth"/>
</modules>
....
</system.webmodules>
Если это IIS6, вам нужно будет сопоставить *.Robots в ASP.NET ISAPI DLL.
(Для некоки вы делаете это следующим образом)
- Откройте IIS Admin.
- Щелкните правой кнопкой мыши на веб -сайте, который вы хотите настроить, и выберите «Свойства» с контекстным меню. Это отобразит диалоговое окно «Свойства веб -сайта».
- Выберите вкладку Home Directory и нажмите кнопку «Конфигурация». Это отобразит диалоговое окно конфигурации приложения.
- Нажмите «Добавить».
- Выберите ASPNET_ISAPI.DLL из каталога .NET Framework, расширения, которое вы хотите сопоставить, и все глаголы, либо только те, которые вы хотите отобразить.
- Нажмите ОК.
Другие советы
Джон,
Вам придется настроить сопоставления сценариев IIS для прохождения *.Robot to aspnet_isapi.dll.