Операция ASMX 404s, а описание службы ASMX - нет, проблема с маршрутизацией URL? - PullRequest
3 голосов
/ 26 марта 2011

Итак, я оказался с загадкой.В нашем приложении есть несколько старых веб-сервисов asmx, которые прекрасно работали целую вечность.

Внезапно они перестали работать на сервере сборки (CI).Я говорю, что перестал работать, потому что, несмотря на то, что описание службы отображается, когда я перехожу к службе, вызов какой-либо операции не направляется в службу (маршрутизация веб-формы).При попытке решить эту проблему возникли две странные проблемы.

1.) После того, как все отложенные изменения были отложены, я получил последнюю версию из TFS и выполнил локальную сборку (, если только яошибаюсь, я получу то, что находится на сервере сборки, так как мы собираем / отправляем при каждой регистрации в ).Я заметил, что не могу продублировать ошибку локально.

2.) Несмотря на то, что я не могу продублировать ошибку локально, я все еще подозреваю маршруты, однако маршруты для всех наших служб сначала добавляются в таблицу.и выглядят так: "{service}.asmx/{*pathInfo}", я полагаю, это было добавлено в качестве меры предосторожности, так как что-то вроде MyService.svc не должно даже попадать на маршрутизатор, поскольку файл действительно существует, хотя яя не уверен, применимо ли это правило к MyService.svc / MyMethod

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

Спасибо!

1 Ответ

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

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

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

и попыталисьрешение о добавлении обработчика 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>


...