【问题标题】:WCF - The message could not be dispatched because the service at the endpoint address ... is unavailable for the protocol of the addressWCF - 无法分派消息,因为端点地址处的服务...对于该地址的协议不可用
【发布时间】:2018-03-07 09:30:54
【问题描述】:

好的,我可以发泄一下吗?我对此感到恶心和厌倦。我大部分时间都在工作,WCF 服务运行良好。下次我运行我的应用程序并进行 WCF 调用时,砰! tcp 套接字不再可用。我已经搜索了高低来解决这个问题,但没有真正的解决方案。我能找到的唯一解决方案是重新启动机器,这是一个巨大的时间浪费和负担。重新启动 WPA 服务、net.tcp 服务、IIS 等并没有任何作用。注销并重新打开并不能解决它。只有重新启动才能解决此问题。除了再次运行我的应用程序进行 WCF 调用之外,我什么都不做,而这种废话就发生了。没有任何配置问题。我几个月来一直在处理这个问题,但找不到任何具体的原因或解决方案来解释为什么会发生这种情况。它发生在我的防火墙打开或关闭时,没关系。

任何人的见解?我认为 WCF / net.tcp 层中确实存在导致此问题的错误。我什至在有时进行 Web.config 更改时在生产 2008 R2 服务器上得到它,所以我学会了在更改之前停止 IIS、WPA、net.tcp 等服务,然后重新启动它们。好痛啊。

我正在使用 .NET4、VS2010、所有服务包等。一切都是最新的。

请原谅我重新启动.....

有人可以帮忙吗?

【问题讨论】:

  • 您是在 IIS 中托管,还是将其作为服务或自托管应用程序运行?您是否尝试过使用netstat 或 TCP View:technet.microsoft.com/en-us/sysinternals/bb897437 之类的工具来查看端口是否正在关闭,或者是否有其他东西正在接管该端口?
  • 在调试此类服务时,我对 WCF 服务有过相同的体验。随机发生的情况是,您在系统无法处理的时间点停止调试会话。端口有点悬而未决,需要重新启动系统才能解决问题。投了这个,因为我很好奇这个的起源和可能的解决方案是什么......
  • 这是个问题吗?它看起来更像是关于一些未知问题的悲伤故事 = 在这种情况下,最好通过工单(MS 合作伙伴)或通过 MS Connect 联系 MS 支持。
  • @Ladislav 是的,你是对的。这是可悲的。很多人似乎都经历过。也许我会打开 MS 票并报告错误。
  • 一个简单的问题:如果您使用的是 Net.TCP,您是否在使用后关闭/处置您的服务客户端对象? TCP.Net 是面向连接的,与 HTTP 不同,因此您需要手动关闭连接。

标签: wcf


【解决方案1】:
  1. 打开命令提示符
  2. 导航到 c:\windows\microsoft.net\framework64\v4.0.30319
  3. 使用命令“ServiceModelReg.exe -r”注册服务模型

学分去那里http://kumaranbose.blogspot.be/2010/08/cryptic-wcf-nettcp-errors.html

【讨论】:

  • 我不能将此标记为正确答案,因为这不是我的问题,如果是我的问题,这将是正确答案。我浏览了几个 msdn howtos,没有一个提到这一步。
  • 所以我启用了所有 WCF 跟踪并搜索了我可以在我们的应用程序或 IIS 日志中找到的所有日志,几天后这个终于帮助了我。
【解决方案2】:

这个问题困扰了我将近 3 年,但只是偶尔发生。 TCPView 有帮助。 我已经杀死了 SMSSvcHost.exe 进程,然后重新启动了 Net.Tcp Listener Adapter 服务。这解决了这个问题。不是真正的解决方案,但至少,我不必再求助于重新启动服务器了。

【讨论】:

    【解决方案3】:

    我遇到了这个问题。它会在每次 IIS 重置后发生(这是我们部署的一部分)。重启 NetTcpPortSharing 服务(同时重启 Net.Tcp Listener Adapter 服务)后问题已解决

    【讨论】:

      【解决方案4】:

      我不确定我是否有答案,但您可以确定端口打开的进程,这有助于缩小问题的范围。我使用了具有 TCPView 的 Sysinternals 套件。这个前卫对我很有帮助。

      TCPView - http://technet.microsoft.com/en-us/sysinternals/bb897437

      【讨论】:

        【解决方案5】:

        Sounds Net.Tcp Listener Adapter 服务被某个进程杀死,或者 Web 服务抛出异常,使通道处于故障状态。

        您是否尝试过将服务的启动类型设置为自动和恢复以在第一次和第二次失败时重新启动服务?

        我非常怀疑 wcf net.tcp 通道层中是否存在错误。如果侦听器正在运行并且 tcp 套接字不再可用,我建议您查看代码,尤其是围绕异常处理策略的代码,并查看 iis 请求日志。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-09-14
          • 1970-01-01
          • 2011-12-18
          • 1970-01-01
          • 1970-01-01
          • 2011-10-19
          • 2016-08-25
          • 1970-01-01
          相关资源
          最近更新 更多