Я пытаюсь вызвать службу WCF из моего приложения Silverlight 3.
Но ... при попытке создать в моем веб-проекте «службу wcf с поддержкой silverlight» мой VS2008 падает при создании элемента (я думаю, что при редактировании web.config).
Итак, я подумал: давайте создадим «нормальный» сервис wcf и вручную отредактируем его как «веб-сервис с поддержкой silverlight».
Итак, я удивляюсь, в чем разница, и второе: почему существует разница между службой, вызываемой из приложения silverlight и приложения не Silverlight?
Это то, что у меня сейчас есть для привязки (у меня есть служба без контракта на интерфейс, только открытый класс, для начала):
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="RadControlsSilverlightApp1.Web.GetNewDataBehavior">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
</behaviors>
<bindings>
<customBinding>
<binding name="customBinding0">
<binaryMessageEncoding />
<httpTransport />
</binding>
</customBinding>
</bindings>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
<services>
<service behaviorConfiguration="RadControlsSilverlightApp1.Web.GetNewDataBehavior"
name="RadControlsSilverlightApp1.Web.GetNewData">
<endpoint address="" binding="customBinding" bindingConfiguration="customBinding0"
contract="RadControlsSilverlightApp1.Web.GetNewData" />
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
</services>
</system.serviceModel>
Этот не работает, потому что, когда я добавляю ссылку на него из приложения silverlight, я получаю следующие сообщения:
Warning 2 Custom tool warning: Cannot import wsdl:portType
Detail: An exception was thrown while running a WSDL import extension: System.ServiceModel.Description.DataContractSerializerMessageContractImporter
Error: Exception has been thrown by the target of an invocation.
XPath to Error Source: //wsdl:definitions[@targetNamespace='']/wsdl:portType[@name='GetNewData'] C:\Silverlight\RadControlsSilverlightApp1\RadControlsSilverlightApp1\Service References\ServiceReference1\Reference.svcmap 1 1 RadControlsSilverlightApp1
Warning 3 Custom tool warning: Cannot import wsdl:binding
Detail: There was an error importing a wsdl:portType that the wsdl:binding is dependent on.
XPath to wsdl:portType: //wsdl:definitions[@targetNamespace='']/wsdl:portType[@name='GetNewData']
XPath to Error Source: //wsdl:definitions[@targetNamespace='http://tempuri.org/']/wsdl:binding[@name='CustomBinding_GetNewData'] C:\Silverlight\RadControlsSilverlightApp1\RadControlsSilverlightApp1\Service References\ServiceReference1\Reference.svcmap 1 1 RadControlsSilverlightApp1
Warning 4 Custom tool warning: Cannot import wsdl:port
Detail: There was an error importing a wsdl:binding that the wsdl:port is dependent on.
XPath to wsdl:binding: //wsdl:definitions[@targetNamespace='http://tempuri.org/']/wsdl:binding[@name='CustomBinding_GetNewData']
XPath to Error Source: //wsdl:definitions[@targetNamespace='http://tempuri.org/']/wsdl:service[@name='GetNewData']/wsdl:port[@name='CustomBinding_GetNewData'] C:\Silverlight\RadControlsSilverlightApp1\RadControlsSilverlightApp1\Service References\ServiceReference1\Reference.svcmap 1 1 RadControlsSilverlightApp1
Warning 5 Custom tool warning: No endpoints compatible with Silverlight 3 were found. The generated client class will not be usable unless endpoint information is provided via the constructor. C:\Silverlight\RadControlsSilverlightApp1\RadControlsSilverlightApp1\Service References\ServiceReference1\Reference.svcmap 1 1 RadControlsSilverlightApp1
(ps., Служба может быть запущена в браузере, я получаю это:
svcutil.exe http://localhost:9599/GetNewData.svc?wsdl
)