Файл поддержки службы WCF не удается загрузить jsdebug - PullRequest
4 голосов
/ 12 сентября 2008

У меня есть служба WCF, которая вызывается из клиентского JavaScript. Вызов завершается ошибкой с ошибкой JavaScript. Вспомогательная трассировка WebDevelopment показывает, что вызовы для загрузки файла поддержки jsdebug приводят к ошибке 404 (файл не найден).

Перезапуск IIS или очистка файлов Temp ASP.Net или установка batch = "false" в теге компиляции в web.config не решает проблему

Из браузера

https://Myserver/MyApp/Services/MyService.svc отображает метаданные службы

однако

https://Myserver/MyApp/Services/MyService.svc/jsdebug приводит к 404.

Кажется, проблема в протоколе https. С помощью http / jsdebug загружается вспомогательный файл JS.

Есть идеи?

ТИА

Ответы [ 3 ]

12 голосов
/ 12 сентября 2008

Разобрался!

Вот раздел конфигурации служб из web.config

Посмотрите на атрибут bindingConfiguration на конечной точке. Значение «webBinding» указывает на тег привязки name = «webBinding» в привязках, и именно это указывает службе использовать безопасность транспортного уровня HTTPS. В моем случае значение атрибута было пустым, в результате чего запрос веб-службы к файлу / js или / jsdebug по HTTPS завершился ошибкой и выдал ошибку 404.

<services>
      <service name="MyService">
        <endpoint address="" behaviorConfiguration="MyServiceAspNetAjaxBehavior" binding="webHttpBinding" bindingConfiguration="webBinding" contract="Services.MyService" />
      </service>
    </services>
    <bindings>
      <webHttpBinding>
        <binding name="webBinding">
          <security mode="Transport">
          </security>
        </binding>
      </webHttpBinding>
    </bindings>

Обратите внимание, что атрибут bindingConfiguration должен быть пустым (""), если доступ к службе осуществляется через http вместо https (при тестировании на локальной машине без сертификатов)

Надеюсь, это кому-нибудь поможет.

0 голосов
/ 05 июня 2015

Для меня проблема заключалась в следующем; мы добавили MVC к решению с маршрутизацией. Наши услуги WCF не игнорировались. Я решил эту проблему, добавив следующее правило (где «WCF» - это папка, в которой мы храним наши службы).

routes.IgnoreRoute("WCF/{*pathInfo}");

Надеюсь, это сэкономит кому-то несколько часов.

0 голосов
/ 06 сентября 2013

Если вы все еще получаете ту же ошибку после всей вашей возможной работы. Просто добавьте AJAX-службу WCF.

...