Обработчики возвращают ошибку 404 на интегрированном конвейере IIS7.5
<httpHandlers>
<add path="ajaxpro/*.ashx" verb="POST,GET" type="AjaxPro.AjaxHandlerFactory, AjaxPro.2" />
<add path="Reserved.ReportViewerWebControl.axd" verb="*" type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" validate="false" />
<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" />
</httpHandlers>
У меня проблема с iis7.5 в интегрированном режиме. Когда я использую его в классическом режиме, обработчики, представленные выше, работают нормально, но если я переключаюсь на интегрированный конвейер - все запросы, которые должны быть обработаны, возвращают ошибку 404. Зачем?
4 ответа
Я мог бы быть здесь далеко, потому что я настолько далеко от эксперта IIS, насколько это возможно, но я столкнулся с вашим вопросом, поскольку у меня тоже возникают проблемы с IIS7 в интегрированном режиме. Одна вещь, которую я заметил, это то, что вы используете раздел httpHandlers, который находится в system.web. Тем не менее, я думаю, что для интегрированного режима вам нужно использовать раздел system.webServer:
<system.webServer>
<handlers>
<add... >
</handlers>
</system.webServer>
Надеюсь, кто-то, кто знает, о чем они говорят, исправит меня, если я ошибаюсь.
В Request Filtering
В разделе мне нужно было установить.axd файлы в качестве Разрешенного расширения, в моей хостинговой компании была настройка Allow unlisted file name extensions
выключен, который отличался от моей среды разработки.
Недавно я переместил веб-сайт клиента со старой установки IIS6 на установку IIS7. Они запускали 404s в своем приложении, когда вызывали также.axd. Их сайт был установлен на.net 2, права доступа правильные, обработчики все выглядели хорошо. В результате изменения пула приложений с "Managed Pipeline Mode", интегрированного на Classic, это решило проблему их приложения.
Перепробовав множество вариантов, они не сработали. Но, тем не менее, это сработало. В вашей папке Appstart добавьте этот код route.IgnoreRoute("{resource}.axd/{*pathInfo}") в routeconfig.cs, как показано ниже.
public static void RegisterRoutes(RouteCollection routes) {
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
}