【问题标题】:WCF Authentication and Socket Aborted ExceptionWCF 身份验证和套​​接字中止异常
【发布时间】: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


【解决方案1】:

这实际上是一个序列化错误。

我试图发送到继承自数据合约的服务的对象。所以我试图向服务发送数据合约的强制转换。

WCF 似乎不允许这样做。

我要感谢 John Saunders 提醒我,不仅服务可以启用跟踪。启用客户端跟踪可以为我节省大量时间。

我正在尝试执行以下操作:

_serviceInterface.Register((MyDataContract)MyParentObject, aVariable, anotherOne);

我需要做什么:

MyDataContract tempContract = MyParentObject.CreateMyDataContract();
_serviceInterface.Register(tempContract, aVariable, anotherOne);
/* Note: MyParentObject.CreateMyDataContract() is my own method which creates an instance
of the MyDataContract and copies the relevant information to it */

【讨论】:

    猜你喜欢
    • 2014-04-21
    • 2011-04-07
    • 2014-02-27
    • 1970-01-01
    • 1970-01-01
    • 2020-04-24
    • 1970-01-01
    • 2011-08-18
    相关资源
    最近更新 更多