wcf错误提示“服务器已拒绝客户端凭据”

一个wcf基于streaming的大文件传输的实例。主要基于microsoft官方例子。

配置很简单,如binding采用netTcpBinding,具体如下:

<netTcpBinding>
<binding transferMode="Streamed" maxReceivedMessageSize="1590309133" openTimeout="15" sendTimeout="15" receiveTimeout="15"></binding>
</netTcpBinding>

服务端和客户端在一个机器上没问题,程序调的通,一些顺利。

后,将服务端和客户端分别放到两台机器上,看看传输效果,结果,客户端报错:“服务器已拒绝客户端凭据”。

仔细想了想,原因如下:

1、例子程序中,没设置Transfer Security mode,则系统默认Transfer Security mode值为“Transport”。

2、在Transport模式下默认客户端认证类型为:“Windows credentials”,即,clientCredentialType为“Windows”。

3、在这种情况下,在一个机器上客户端和服务端都在一个机器上,采用Windows认证肯定没问题。

4、但是放到两个机器上,传过来的基于客户端window账户的客户端凭证在另一个机器上验证不过。除非在服务端机器上做客户端凭证的特别设置。

 因为只是测试,可以先把客户端验证关掉即可,在服务端和客户端binding配置分别添加:

 <security mode="None"></security>

另外,在千兆局域网中。

据试验传输1G的电影,用netTcpBinding用时大约55秒。

而用basicHttpBinding用时3分多。

posted @ 2011-07-15 13:58  黎明即起  阅读(1940)  评论(0编辑  收藏  举报