我有一个WPF客户端,它连接到一个非常简单的ISS应用程序上的WCF端点。我想将Silverlight应用程序连接到同一个WCF服务。我已经读过我必须启用OData。 4这仍然是必要的吗?如果是这样,我该怎么办?我如何实际连接端点?我是否需要使用RIA服务来促进连接?我可以使用相同的IIS应用程序来提供两个端点吗?
提前感谢您的帮助。这个让我很难过。
编辑:
以下是我的WCF服务和Silverlight客户端的配置。
WCF服务器配置(模糊处理):
<system.serviceModel>
<bindings>
<wsHttpBinding>
<binding maxReceivedMessageSize="2147483647">
<security mode="Transport">
<transport clientCredentialType="None"/>
</security>
</binding>
</wsHttpBinding>
<basicHttpBinding>
<binding maxReceivedMessageSize="2147483647">
<security mode="Transport">
<transport clientCredentialType="None"/>
</security>
</binding>
</basicHttpBinding>
</bindings>
<services>
<service name="MyNamespace.Services.MyService">
<endpoint contract="MyNamespace.ServiceContracts.IMyService"
address=""
binding="wsHttpBinding"
/>
<endpoint contract="MyNamespace.ServiceContracts.IMyService"
address="basic"
binding="basicHttpBinding"
/>
<endpoint contract="IMetadataExchange"
address="mex"
binding="mexHttpBinding"
/>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior>
<serviceMetadata httpGetEnabled="True" />
<serviceDebug includeExceptionDetailInFaults="False" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
Silverlight客户端配置(模糊处理):
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="Binding.Secure" maxReceivedMessageSize="2147483647" maxBufferSize="2147483647">
<security mode="Transport" />
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint name="MyServiceReferenceNamespace.MyService"
contract="MyServiceReferenceNamespace.IMyService"
address="https://www.mydomain.com/MyVirtualDirectory/MyContract.svc"
binding="basicHttpBinding"
bindingConfiguration="Binding.Secure"
/>
</system.serviceModel>
(名称已更改以保护我的客户。)
答案 0 :(得分:3)
您无需启用OData;只要现有服务中的端点使用与Silverlight兼容的绑定(例如,BasicHttpBinding),SL应用程序就可以像使用WPF一样使用它。如果绑定不兼容,则可以向服务添加新端点(是的,它可以位于同一IIS应用程序中),SL应用程序可以使用该端点。
在您的SL项目中,您可以选择“添加服务引用”,这将在该项目中创建一个知道如何与WCF服务“对话”的代理。
答案 1 :(得分:1)
最佳信息可在此MSDN文章中找到:Accessing Web Services in Silverlight
Silverlight是否与WCF服务托管在同一个IIS上?如果没有,您应该阅读:Making a Service Available Across Domains Boundaries