У меня есть работающее приложение Silverlight 4 (VS2010, SL4, WCF RIA, размещенное на моем устройстве разработки с использованием Cassini, 64-разрядная версия Windows 7). Внутри каталога ClientBin у меня есть файл .svc, описывающий мою службу:
<% @ServiceHost Service="MyApp.Services.MyService
Factory="System.ServiceModel.DomainServices.Hosting.DomainServiceHostFactory" %>
Когда я перехожу к http://localhost:52878/ClientBin/MyApp-Services-MyService.svc вижу следующее:
Вы создали услугу. Чтобы протестировать эту службу, вам нужно будет создать клиента и использовать его для вызова службы. Это можно сделать с помощью инструмента svcutil.exe из командной строки со следующим синтаксисом: svcutil.exe http://localhost:52878/ClientBin/MyApp-Services-MyService.svc?Wsdl
Я хочу получить доступ к этой службе из приложения службы Windows. Насколько я понимаю, мне нужно включить конечные точки SOAP, чтобы это произошло. Итак, я добавляю в свой файл web.config следующее:
<domainServices>
<endpoints>
<add name="soap"
type="System.ServiceModel.DomainServices.Hosting.SoapXmlEndpointFactory,
System.ServiceModel.DomainServices.Hosting, Version=4.0.0.0,
Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
</endpoints>
</domainServices>
Во-первых, Intellisense жалуется на наличие тега, говоря:
Элемент system.ServiceModel имеет недопустимый дочерний элемент domainServices.
Во-вторых, вышеупомянутое приложение Silverlight перестает работать, предположительно из-за того, что это изменение нарушает работу базовых веб-служб.
В-третьих, похоже, что сборка System.ServiceModel.DomainServices.Hosting на самом деле не содержит типа SoapXmlEndpointFactory; если я попытаюсь перейти к службе после добавления вышеуказанного в web.config, я вижу:
Не удалось загрузить тип System.ServiceModel.DomainServices.Hosting.SoapXmlEndpointFactory из сборки System.ServiceModel.DomainServices.Hosting, Version = 4.0.0.0, Culture = нейтральный, PublicKeyToken = 31bf3856ad364e35.
Если я проверю сборку с помощью Reflector, я вижу, что она содержит типы DomainServiceEndpointFactory и PoxBinaryEndpointFactory, но не SoapXmlEndpointFactory.
Может кто-нибудь, дайте мне знать, как мне это делать? Я не могу поверить, что должно быть так сложно просто использовать службу WCF RIA в чем-то другом, кроме приложения Silverlight!