问题在于 NetTcpBinding 服务端和客户端配置不一致。
至少 客户端和服务端:安全性、是否启用可靠会话以及传输方式必须一致
主要是传输方式导致 "不支持正在使用的 .Net 组帧模式"。
安全性和是否启用可靠会话不一致 导致错误 " 套接字连接已中止。这可能是由于处理消息时出错或远程主机超过接收超时或者潜在的网络资源问题导致的。本地套接字超时是“00:01:59.9839991”。 ---> System.Net.Sockets.SocketException: 远程主机强迫关闭了一个现有的连接。"
客户端代码配置 1 EndpointAddress ea = new EndpointAddress(url); 2 //安全性 none 是否启用可靠会话 false 3 NetTcpBinding tc = new NetTcpBinding(SecurityMode.None, false) 4 { 5 ReceiveTimeout = new TimeSpan(10, 10, 10), 6 TransferMode = TransferMode.Streamed,///传输方式 7 MaxReceivedMessageSize = 1073741824, 8 SendTimeout = new TimeSpan(0, 2, 0) 9 }; 10 return ChannelFactory<T>.CreateChannel(tc, ea);
服务端代码配置 1 ServiceHost host = ContractDescription.GetContract(typeof(IService1)); 2 //安全性 none 是否启用可靠会话 false 3 NetTcpBinding tc = new NetTcpBinding(SecurityMode.None, false); 4 //tc.MaxReceivedMessageSize = 2147483647; 5 //传输方式 6 tc.TransferMode = TransferMode.Streamed; 7 //tc.SendTimeout = new TimeSpan(10, 10, 0); 8 //tc.ReceiveTimeout = new TimeSpan(0, 2, 10); 9 host.AddServiceEndpoint(iType, tc, string.Concat("net.tcp://localhost:8990/service/"));
服务端xml 配置 1 <bindings> 2 <netTcpBinding > 3 <binding name="TcpBinding" maxReceivedMessageSize="2147483647" transferMode="Streamed" > 4 <security mode="None"> 5 <transport clientCredentialType="None"/> 6 <message clientCredentialType="None"/> 7 </security> 8 <reliableSession enabled="false"/> 9 <readerQuotas maxDepth="64" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="4096" maxNameTableCharCount="16384"/> 10 </binding> 11 </netTcpBinding> 12 </bindings>//<security mode="None"> //设置传输 安全性 none//<reliableSession enabled="false"/> //不启用可靠会话 false//transferMode 传输方式
时间: 2024-10-12 14:28:39