我可以成功使用WCF流将xfer数据从服务器发送到同一台机器上的客户端。但是,只要我将服务器部署到另一台计算机,就会出现性质错误“对SSPI的调用失败:目标主体名称不正确”。有没有人遇到这个。我试图在两边设置SecurotyMode.None,但这给了我一些其他的超时错误!
这是服务器绑定:
NetTcpBinding binding = new NetTcpBinding();
binding.TransferMode = TransferMode.Streamed;
binding.MaxReceivedMessageSize = int.MaxValue;
binding.CloseTimeout = TimeSpan.MaxValue;
binding.SendTimeout = TimeSpan.MaxValue;
var ep = serviceHost.AddServiceEndpoint( typeof( ISessionResultsServer ), binding, string.Format( "net.tcp://localhost:{0}/ResultService", port ) );
这是客户端绑定:
NetTcpBinding clientBinding = new NetTcpBinding();
clientBinding.TransferMode = TransferMode.Streamed;
clientBinding.SendTimeout = TimeSpan.MaxValue;
clientBinding.CloseTimeout = TimeSpan.MaxValue;
clientBinding.MaxReceivedMessageSize = long.MaxValue;
clientBinding.ReceiveTimeout = TimeSpan.MaxValue;
答案 0 :(得分:2)
这与流媒体无关。这是安全问题。您正在使用具有Windows安全性的Net TCP,其中服务必须向客户端进行身份验证,并且客户端必须对服务进行身份验证。
您的案例中的服务身份验证基于用户主体名称。它是托管您服务的进程的用户名。您必须修改客户端配置并在端点中设置正确的标识。
类似的东西:
<client>
<endpoint name="..." addres="net.tcp://..." binding="netTcpBinding" bindingConfiguration="..." contract="...">
<identity>
<userPrincipalName value="MyServiceAccount@MyDomain" />
</identity>
</endpoint>
</client>