2008-09-12 3 views
4

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

Перезапуск IIS или убирая файлы Temp ASP.Net или установка партии = «ложных» на компиляции тега в web.config не решает проблему

Из браузера

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

однако

https://Myserver/MyApp/Services/MyService.svc/jsdebug дает в результате 404.

Проблема связана с протоколом https. С http/jsdebug загружает поддерживающий JS-файл.

Любые идеи?

TIA

ответ

11

Обдумал это!

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

Посмотрите на атрибут bindingConfiguration на конечной точке. Значение «webBinding» указывает на тег связывания name = «webBinding» в привязках, и это то, что говорит службе, чтобы использовать уровень безопасности на уровне протокола HTTPS. В моем случае значение атрибута было пустым, в результате чего запрос webservice к файлу/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

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

+1

Предоставить код-релевант с разъяснением ура – 2013-09-06 08:42:35

0

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

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

Надеюсь, что кто-то сохранит несколько часов.