我使用单向WCF服务合同将数据从服务器推送到一组注册客户端。该应用程序大多数工作正常,但用户报告生产环境中偶尔会断开连接。
当我尝试重现开发中的错误时,例如。通过杀死服务器,我看到异常的原因在$ exception debugger变量中可用(如下所示)。我已经阅读了here,它无法在代码中检索此错误的值,但是是否可以使用某种技术或配置捕获并记录此错误?
我认为在双向RPC类型调用中它会非常简单,但是使用单向契约它并不像文档中那么清楚。我会喜欢能够运行WCF网络跟踪工具,但由于断开连接是间歇性的,生产环境相当严重,所以我不能轻易做到这一点
以下是服务合同的摘录:
[OperationContract(IsOneWay = true)]
void SendGridState(GridState grid);
服务绑定:
var binding = new NetTcpBinding
{
MaxBufferPoolSize = int.MaxValue,
MaxBufferSize = int.MaxValue,
MaxReceivedMessageSize = int.MaxValue,
ReceiveTimeout = TimeSpan.MaxValue,
ReliableSession = { InactivityTimeout = TimeSpan.MaxValue }
};
故障事件处理程序:
clientChannel.Faulted += delegate
{
connectionStatus = CommunicationState.Faulted;
}