0

我有以下带有 tcp 绑定和 Windows 身份验证的服务器配置文件:

<customBinding>
        <binding name="NewBindingTcpSecure">
          <security authenticationMode="SecureConversation">
            <secureConversationBootstrap authenticationMode="SspiNegotiated"   />
          </security>

          <binaryMessageEncoding maxSessionSize="1000000">
            <readerQuotas maxDepth="64" maxStringContentLength="131072" maxArrayLength="16384"
              maxBytesPerRead="16384" maxNameTableCharCount="16384" />
          </binaryMessageEncoding>
          <!--<windowsStreamSecurity protectionLevel="None" />-->

          <tcpTransport maxReceivedMessageSize="2147483647" maxBufferSize="2147483647"
            portSharingEnabled="true" />
        </binding>

当我使用 Windows 应用程序使用它时它可以工作。但是当我使用 silverlight 4 消费时它不起作用。

我在 silverlight 中的客户端绑定如下:

 <bindings>
            <customBinding>
                <binding name="DefaultTcp">
                    <binaryMessageEncoding />
                    <tcpTransport />
                </binding>
            </customBinding>
        </bindings>
        <client>
            <endpoint address="net.tcp://localhost:4502/HelloWcf/Service1.svc"
                binding="customBinding" bindingConfiguration="DefaultTcp"
                contract="ServiceReference1.IService1" name="DefaultTcp" />
        </client>

我收到的错误是:

The message could not be processed. This is most likely because the action 'http://tempuri.org/IService1/GetData' is incorrect or because the message contains an invalid or expired security context token or because there is a mismatch between bindings. The security context token would be invalid if the service aborted the channel due to inactivity. To prevent the service from aborting idle sessions prematurely increase the Receive timeout on the service endpoint's binding.

请您的帮助...

4

2 回答 2

0

您是否创建了跨域访问策略以允许 tcp 通信?

<?xml version="1.0" encoding ="utf-8"?> 
 <access-policy>   
  <cross-domain-access>     
   <policy>       
   <allow-from>         
   <domain uri="*"/>       
   </allow-from>       
   <grant-to>         
   <socket-resource port="4502-4506" protocol="tcp" />       
   </grant-to>     
   </policy>   
</cross-domain-access> 
</access-policy>

查看这篇文章: http ://www.silverlightshow.net/items/WCF-NET.TCP-Protocol-in-Silverlight-4.aspx

于 2011-10-04T17:25:14.873 回答
0

我知道这个线程有点老了,但以防万一有人检查出来,值得回答 - Silverlight 不支持具有安全性的 TCP 绑定,如此处所述:http: //msdn.microsoft.com/en-我们/图书馆/cc645026(v=vs.95).aspx

于 2012-10-09T12:47:16.337 回答