Почему я получаю HTTP 404 при отсутствии расширения .asmx? - PullRequest
0 голосов
/ 24 марта 2011

Я пытаюсь написать обработчик HTTP GET.Путь должен начинаться с http://site/processTask и иметь набор параметров в кодировке URL.У меня есть следующее в моем файле 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" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false"/>
    <add verb="GET" path="processTask*" type="MyHandler.ProcessTaskHandler, MyHandler"/>
</httpHandlers>

, теперь, когда я набираю URL http://mysite/processTask в браузере, я получаю HTTP 404, но если я изменю строку add verb на следующую:

<add verb="GET" path="processTask.asmx*" type="MyHandler.ProcessTaskHandler, MyHandler"/>

и введите http://mysite/ProcessTask.asmx в браузере, обработчик запускается, и я получаю ответ от обработчика.

В чем проблема?Почему обработчик запускается только тогда, когда путь содержит .asmx?Как изменить web.config, чтобы .asmx не требовалось?

1 Ответ

3 голосов
/ 24 марта 2011

Когда путь просто / processTask (без расширения) IIS не может понять, прежде всего, что он должен передать запрос ASP.NET , особенно в IIS 5.1, и файл не обрабатывается ASP.NET, а только подается с диска (и такого файла нет, следовательно, HTTP 404).

Для этого необходимо настроить IIS для обработки всех файлов с ASP.NET

В IIS 5.1 щелкните правой кнопкой мыши корневой каталог, откройте Свойства веб-сайта | Главная Каталог | Конфигурация, и там скопируйте / вставьте настройки из *.aspx (или любого другого расширения, которое уже обрабатывается ASP.NET) в новое расширение как .* и снимите флажок «Проверять, существует ли файл» там. Вот пошаговое руководство по аналогичной проблеме.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...