困惑 - > Silverlight 4不允许我使用BasicHttpBinding来使用WCF服务?

时间:2011-09-29 19:04:09

标签: silverlight wcf

好的我完全糊涂了,希望我在这里错过了一些非常明显的东西。我正在使用托管在使用“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%肯定。我在消费时检查“始终生成消息合同”,但没有区别。

1 个答案:

答案 0 :(得分:0)

您在配置文件中使用了一些特殊属性/值:

BasicHttpWindowsBinding将transferMode和messageEncoding设置为非默认值。

根据发现类似问题的WCF service for Sl3,您应该执行以下操作:

  

messageEncoding =“Mtom”

     

尝试:messageEncoding =“Text”而不是。

     

或transferMode =“StreamedResponse”

     

尝试:transferMode =“Buffered”而不是。

如果您尝试这些步骤,您可能会遇到运行情况,并且可以从那时开始构建具体内容,确保它继续为SL-WCF连接工作。