IIS 6 ASP.NET обработчик 404 ошибка - PullRequest
0 голосов
/ 03 февраля 2012

У меня есть IIS6, работающий на Windows Server 2003 (x86), и я написал собственный обработчик (не обработчик для ошибок 404).

Когда я пытаюсь получить доступ к обработчику, открыв в браузере http://localhost/Priority1.Sync/Transfer.p1s, Я получаю ошибку 404 (404 0 в файле журнала).Другие страницы в веб-приложении работают, например, http://localhost/priority1.sync/syncservice.asmx

. На моем компьютере с IIS7 отлично работает обработчик.

web.config настроен следующим образом:

<httpHandlers>
            <remove verb="*" path="*.asmx"/>
            <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
            <add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
            <add verb="GET,HEAD" path="ScriptResource.axd" validate="false" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
            <add verb="*" path="*.p1s" type="MCS.Priority1.Sync.WebServices.TransferHandler, SyncService" />
</httpHandlers>

Я установил расширение приложения для "* .p1s" (веб-сайт по умолчанию> Свойства> Домашний каталог> Конфигурация> Сопоставления> Добавить).

Я что-то упустил?

Спасибо, Энди

Ответы [ 3 ]

5 голосов
/ 03 февраля 2012

У вас включена опция «Проверить, что файл существует» в конфигурации настраиваемого обработчика IIS или нет?

IIS6 ожидает, что физический файл существует по умолчанию.Если его нет, он вообще не передаст запрос вашему обработчику.Вам нужно отключить эту проверку, чтобы она отправляла запрос вашему обработчику, как и ожидалось.

1 голос
/ 03 февраля 2012

Если вы регистрируете обработчики для IIS 6, помните, что они должны быть помещены в элемент <httpHandlers> раздела <system.web> файла web.config, а не в раздел <system.webServer>, используемый IIS7.

1 голос
/ 03 февраля 2012

IIS6 и IIS7 - принципиально разные звери.Управляемый конвейер IIS7 означает, что каждый запрос попадает к вашим зарегистрированным обработчикам, в IIS6 обрабатываются только вещи, сопоставленные с ASPNET_ISAPI.DLL (обычно * .aspx и * .ashx и другими расширениями ASP.NET по умолчанию).

Вы можете сделатьIIS7 dev box ведет себя таким образом, используя «классический» конвейер для пула приложений разработки для этого проекта.

Еще один прием, чтобы заставить его работать так, как вы ожидаете, - отобразить ошибки 404 на странице ASP.NET, а затемВы можете, по крайней мере, войти в свой обработчик.

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

...