【问题标题】:WCF Tracing Error: An operation was attempted on a nonexistent network connectionWCF 跟踪错误:尝试在不存在的网络连接上执行操作
【发布时间】:2011-04-03 22:41:35
【问题描述】:

我设置了 WCF 服务跟踪,因为大约 30 个客户端中有 1 个无法完成与服务器的连接。在该客户端上设置测试用例后,WCF 跟踪报告给了我这些异常:

尝试对不存在的网络连接进行操作

然后

由于线程退出或应用程序请求,I/O 操作已中止

我找到了this MSDN question 和适用于 Windows 2000 Server 和终端服务的解决方案,并提供了修复该问题的修补程序。

我使用的是 Windows 2003 Server,因此该修补程序不适用于我。有谁知道这 1 个客户端发生了什么,而其他 29 个连接正常?

编辑: 客户端在尝试打开与服务器的连接时返回此异常:

接收到http://endpointaddress/ 的 HTTP 响应时出错。这可能是由于服务端点绑定未使用 HTTP 协议。这也可能是由于服务器中止了 HTTP 请求上下文(可能是由于服务关闭)。有关详细信息,请参阅服务器日志。

【问题讨论】:

  • 我曾经在单个客户端上遇到过 WCF 连接问题,但我不记得是否相同。在这种情况下,事实证明这台机器有一个它不应该有的静态 IP 地址。它在网络上复制了另一个或类似的东西。
  • 感谢 Jay 的建议,我可以远程访问客户端,该机器上的另一个 WCF 客户端正在连接到另一台服务器上完全不同的 WCF 服务,该服务运行良好,所以这让我相信了一些事情与服务器?

标签: .net wcf wcf-binding wcf-client


【解决方案1】:

我最近遇到了这个问题。核心问题是调用的上下文。

我有很多这样的代码:

New()
{
    IPC_Server.LoadFirstSetOfData();
}

IPC_Server_LoadFirstSetOfData_Completed(Object sender, System.ComponentModel.AsyncCompletedEventArgs e)
{
    IPC_Server.LoadSecondSetOfData();
}

IPC_Server_LoadSecondSetOfData_Completed(Object sender, System.ComponentModel.AsyncCompletedEventArgs e)
{
    ShowDataToUser();
}

问题在于我在第一个回调中时调用了第二个 IPC 函数。出于某种原因,这样做会“破坏”下一次通话。通过将 IPC 调用移出回调,我们解决了这个问题。

现在如何您选择将呼叫移出回调由您决定。也许是合同变更?有一个计时器来监视第一个回调的到来,然后从计时器执行第二个 IPC 调用?选择权在你。

【讨论】:

  • 感谢您发布答案。不幸的是,我的连接从来没有达到我什至可以进行任何接口调用的地步。这是客户端对服务器的初始“打开”。这就是我失败的原因。这个问题在客户端以某种方式解决了 3 个月,然后最近又恢复了。这让我 100% 肯定这是路由器或其他地方的客户端配置问题。这非常令人困惑,我不知道如何向客户提出问题以表明这是他们的问题,他们需要改变一些东西。
猜你喜欢
  • 1970-01-01
  • 2012-03-30
  • 2015-08-22
  • 1970-01-01
  • 2016-02-22
  • 1970-01-01
  • 2021-11-04
  • 1970-01-01
  • 2014-10-15
相关资源
最近更新 更多