好的我完全糊涂了,希望我在这里错过了一些非常明显的东西。我正在使用托管在使用“BasicHttpBinding”配置的Windows服务中的我的WCF服务(在ASP.NET中 稳定且工作 )。当我尝试从Silverlight 4应用程序中使用它时,我在VS.NET中遇到以下错误:
*“自定义工具警告:端点' BasicHttpBinding _IMyService',地址为”https:// mywcfservice:8000 / WCFServices / MyService“与Silverlight 4不兼容。正在跳过... MyService \ Reference.svcmap“*
什么!我知道并且已经通过箍跳来制作一个netTCPBinding,其问题已经超过SL4中的错误,但为什么世界上的BasicHttpBinding与SL4有任何问题?我认为,因为像SL2的第1天一样,BasicHttpBinding是Silverlight消耗的事实和最简单的绑定。这是我的WCF 服务器配置:
<service behaviorConfiguration="ServiceBehavior" name="MyService">
<endpoint address="" binding="basicHttpBinding"
bindingConfiguration="BasicHttpWindowsBinding"
contract="IMyService"/>
<endpoint address="mex"
binding="mexHttpsBinding"
contract="IMetadataExchange"/>
<host>
<baseAddresses>
<add baseAddress="https://mywcfservice:8000/WCFServices/MyService"/>
</baseAddresses>
</host>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="ServiceBehavior">
<serviceDebug includeExceptionDetailInFaults="false"/>
<serviceMetadata httpsGetEnabled="true" httpGetEnabled="false"/>
</behavior>
</serviceBehaviors>
</behaviors>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpWindowsBinding"
maxReceivedMessageSize="214748"
messageEncoding="Mtom"
transferMode="Streamed">
<security mode="Transport">
<transport clientCredentialType="None"/>
</security>
</binding>
</basicHttpBinding>
</bindings>
我在这里缺少什么?如果有人可以帮助我或指导可能无关紧要的事情,请告诉我。谢谢!
编辑:我认为我可能会在路上 - 这项服务使用“消息合同”作为方法中的参数,我想知道这是否会导致任何问题的问题。但是,从这篇MSDN文章:“Silverlight 4支持消息合同” http://msdn.microsoft.com/en-us/library/cc896571(v=vs.95).aspx,所以我仍然不是100%肯定。我在消费时检查“始终生成消息合同”,但没有区别。
答案 0 :(得分:0)
您在配置文件中使用了一些特殊属性/值:
BasicHttpWindowsBinding将transferMode和messageEncoding设置为非默认值。
根据发现类似问题的WCF service for Sl3,您应该执行以下操作:
messageEncoding =“Mtom”
尝试:messageEncoding =“Text”而不是。
或transferMode =“StreamedResponse”
尝试:transferMode =“Buffered”而不是。
如果您尝试这些步骤,您可能会遇到运行情况,并且可以从那时开始构建具体内容,确保它继续为SL-WCF连接工作。