ITPub博客

首页 > > > Silverlight调用WCF

Silverlight调用WCF

作者:古月雪 时间:2019-10-16 13:48:03 0 删除 编辑

Silverlight跟WCF进行双工通信,终结点的绑定是采用自定义绑定,当服务发送的数据小于70K的时候,silverlight就能接收到,但是当服务发送的数据大于70k的时候,silverlight客户端就获取不到数据,silverlight异步获取到的错误信息是:服务器未提供有意义的回复;这可能是由协定不匹配、会话过早关闭或内部服务器错误引起的。

 

WCF的配置为:

<?xml version="1.0"?>
<configuration>
<!--后台服务配置-->
<system.serviceModel>
<protocolMapping>
<add scheme="tcp" binding="netTcpBinding"/>
</protocolMapping>
<bindings>
<customBinding>
<binding name="DemoCustomBinding">
<binaryMessageEncoding maxReadPoolSize="2147483647" maxSessionSize="2147483647" maxWritePoolSize="2147483647"></binaryMessageEncoding>
<tcpTransport maxReceivedMessageSize="2147483647" maxBufferSize="2147483647"/>
</binding>
</customBinding>
<netTcpBinding>
<binding name="DemoTcpBinding" portSharingEnabled="true" maxReceivedMessageSize="2147483647" maxBufferSize="2147483647"></binding>
</netTcpBinding>
</bindings>
<services>

<service behaviorConfiguration="AirCoolIslandService.AirCoolIslandServiceBehavior" name="AirCoolIslandService.AirCoolIslandService">
<endpoint address="Service" binding="customBinding" contract="AirCoolIslandService.IAirCoolIslandService" bindingConfiguration="DemoCustomBinding"></endpoint>
<endpoint address="mex" binding="mexTcpBinding" contract="IMetadataExchange"/>

<host>
<baseAddresses>
<add baseAddress="http://192.168.0.123:4506"/>
<add baseAddress="net.tcp://192.168.0.123:4507"/>
</baseAddresses>
</host>
</service>
</services>

<serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>

<behaviors>
<serviceBehaviors>
<behavior name="AirCoolIslandService.AirCoolIslandServiceBehavior">
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="false"/>
<dataContractSerializer maxItemsInObjectGraph="2147483647"/>
</behavior>
</serviceBehaviors>
</behaviors>

</system.serviceModel>

<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>
</configuration>


Silverlight客户端添加引用后生成的配置文件为:

<configuration>
    <system.serviceModel>
        <bindings>
            <customBinding>
                <binding name="CustomBinding_IAirCoolIslandService">
                    <binaryMessageEncoding />
                    <tcpTransport maxReceivedMessageSize="21147483647" maxBufferSize="2147483647" />
                </binding>
                <binding name="CustomBinding_IAirCoolIslandService1">
                    <binaryMessageEncoding />
                    <tcpTransport maxReceivedMessageSize="21147483647" maxBufferSize="2147483647" />
                </binding>
            </customBinding>
        </bindings>
        <client>
            <endpoint address="net.tcp://192.168.1.26:4507/Service" binding="customBinding"
                bindingConfiguration="CustomBinding_IAirCoolIslandService"
                contract="ACIServiceClient.IAirCoolIslandService" name="CustomBinding_IAirCoolIslandService" />
            <endpoint address="net.tcp://192.168.1.26:4507/Service" binding="customBinding"
                bindingConfiguration="CustomBinding_IAirCoolIslandService1"
                contract="ACIService.IAirCoolIslandService" name="CustomBinding_IAirCoolIslandService1" />
        </client>
    </system.serviceModel>
</configuration>


silverlight调用WCF的代码:

var endPointAddress = new EndpointAddress(serviceUri);
                    BindingElement bindingElement = new TcpTransportBindingElement();
                    CustomBinding customBind = new CustomBinding(bindingElement);
                    serviceClient = new ACIService.AirCoolIslandServiceClient(new InstanceContext(this), customBind, endPointAddress);
                    ((IContextChannel)serviceClient.InnerChannel).OperationTimeout = new TimeSpan(0, 0, 240);

   //调用服务的异步方法,获取历史数据
            serviceClient.GetHistoryDataAsync(beginTime, endTime, sb.ToString().TrimEnd(','), RealOrImitate);

serviceClient.GetHistoryDataCompleted += new EventHandler<ACIService.GetHistoryDataCompletedEventArgs>(serviceClient_GetHistoryDataCompleted);



来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/3711/viewspace-3142696/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-07-09

  • 博文量
    160
  • 访问量
    1176