什么可能导致我的WCF抛出奇怪的Socket Exceptions?

时间:2010-01-05 17:58:16

标签: c# .net wcf

有时会出现SocketException:

Stack trace:    at System.Net.Sockets.Socket.Send(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags)
   at System.ServiceModel.Channels.SocketConnection.Write(Byte[] buffer, Int32 offset, Int32 size, Boolean immediate, TimeSpan timeout)

有时会抛出以下CommunicationObjectAbortedException:

    Stack trace:    at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
   at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)

行为非常随机。它违背了通常有效的静态调用。

2 个答案:

答案 0 :(得分:1)

什么错误?

如果是WSA错误之一(100053 WSAECONNABORTED,10054 WSAECONNRESET和朋友),则表示底层IP堆栈已关闭套接字。如果是异步IO挂起中止995 ERROR_OPERATION_ABORTED则表示发布了异步I / O请求的线程已退出,并且请求已被操作系统中止。

答案 1 :(得分:0)

在其上实现与ServiceContract的接口的类仅实例化一次并重用方法。这会导致多线程异常,这些异常不会传递回客户端,也不会记录在事件日志中。