【发布时间】:2010-07-29 14:00:20
【问题描述】:
这是项目的设置。
我有一个 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 分钟后发生方法的消息。
没有 InnerException。
我试图用谷歌搜索这个问题,但结果往往是“只要禁用安全性,它就会正常工作”。不幸的是,这无法做到。
我对这个问题感到非常困惑,任何帮助将不胜感激。
非常感谢,
埃里斯
【问题讨论】:
-
嗨,WCF 跟踪已打开,但正如我所指出的,它没有给我任何有用的信息。它收到的第一个异常是 SocketAborted 异常。跟踪级别设置为详细、活动跟踪、传播活动
标签: wcf certificate net.tcp