这是该项目的设置。
我有一个 WCF 服务,它以缓冲模式托管在 net.tcp 绑定上,并启用了 ReliableSession。
绑定配置为使用 TransportWithMessageCredential 安全性。该证书是我使用指纹识别的自签名证书。UserNameValidator 是一个自定义验证器,用于测试,从不失败(之前没有失败,但我消除了不确定性)
服务和客户端在同一台机器上,他们都可以访问证书。
问题:
我在尝试使用服务中的方法时收到 Socket Aborted 异常。这是我用来打开与服务的连接的代码。MonitorServiceCallbacks 仅包含满足接口要求的空方法。
_instanceContext = new InstanceContext(new MonitorServiceCallbacks());
_serviceInterface = new MonitorCallbackServiceClient(_instanceContext);
_serviceInterface.ClientCredentials.UserName.UserName = Environment.MachineName;
_serviceInterface.ClientCredentials.UserName.Password = "myPassword";
_serviceInterface.Open();
这似乎工作正常,因为 _serviceInterface.State 变量设置为 State.Opened 并且自定义验证器被调用并无异常返回。
但是,如果我尝试使用 _serviceInterface 代理调用方法,则不会在服务上运行任何我可以闯入的代码,并且跟踪日志显示除了 SocketAborted 异常之外没有错误,该异常发生在收到似乎是消息的 1 分钟后方法。
没有内部异常。
我试图用谷歌搜索这个问题,但结果往往是“只要禁用安全性,它就会正常工作”。不幸的是,这是无法做到的。
我对这个问题感到非常困惑,任何帮助将不胜感激。
非常感谢,
埃里斯