Служба ASMX работает на сервере разработки, возвращает 404 при развертывании в IIS 7.5 - PullRequest
19 голосов
/ 24 марта 2011

У меня есть веб-приложение в ASP.NET 4.0.Я добавил службу asmx, в основном в качестве источника для значений поиска расширителя автозаполнения.

Когда я отлаживаюсь на своей машине локально, все работает нормально.Однако при развертывании веб-приложения в IIS 7.5 при попытке отправить данные в службу я получаю ответ HTTP 404.

Я могу просмотреть определение службы, просмотреть доступные операции.Что характерно, однако, когда я использую тестовые страницы для тестирования службы с использованием POST, я снова получаю HTTP 404.

Я не уверен, что происходит.Я создал файл asmx в своем веб-приложении, и он развернут в виртуальном каталоге моего работающего в другом случае рабочего приложения.

Возможно, существует проблема с развертыванием файла .asmx в том же виртуальном каталоге?

Ответы [ 4 ]

22 голосов
/ 31 июля 2011

Я только что столкнулся с той же ошибкой после того, как наткнулся на эту запись SO:

Обработчики возвращают ошибку 404 на интегрированном конвейере IIS7.5 и

Операция ASMX 404s, но не описание службы ASMX, проблема с маршрутизацией URL?

и попытался решить проблему добавления обработчика asmx в раздел webServer web.configs:


  <system.webServer>
    <validation validateIntegratedModeConfiguration="false"/>
    <modules runAllManagedModulesForAllRequests="true"/>
    <handlers>
      <add verb="*" path="*.asmx" name="asmx" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    </handlers>
  </system.webServer>


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

Вам следует проверить пул приложений для веб-службы:

  • Настроена ли она для использования правильной версии .NET
  • Проверьте личность
  • Проверьтережим управляемого конвейера;некоторые приложения требуют использования Classic
0 голосов
/ 27 апреля 2018

В Asp.net MVC RouteConfig.cs у вас не может быть этой строки:

routes.RouteExistingFiles = true; 

Это сбрасывало меня http 404 ошибка.

0 голосов
/ 15 апреля 2018

Я отправлял в asmx с помощью jQuery, и он работал в тестовых системах, но на производственном сервере произошел сбой. Я пропустил параметр типа данных:

$.ajax({
        type: "POST",
        contentType: "application/json; charset=utf-8",
        data: JSON.stringify({
            //Data goes here
        }),
        dataType: "json", //<<<<<<<<< This is critical for the post to succeed in production. Without it we get a 404.
        url: "/yourPathHere/yourEndpoint.asmx/methodName",
        error: function (jqxhr, status) {
            //error handler
        },
        success: function (data, status) {
            //succes handler
        }
    });
...