在 net.tcp://url 上没有可以接受消息的端点侦听。这通常是由不正确的地址或 SOAP 操作引起的

Posted

技术标签:

【中文标题】在 net.tcp://url 上没有可以接受消息的端点侦听。这通常是由不正确的地址或 SOAP 操作引起的【英文标题】:There was no endpoint listening at net.tcp://url that could accept the message. This is often caused by an incorrect address or SOAP action 【发布时间】:2021-01-28 11:39:05 【问题描述】:

我有一个使用 net.tcp 协议的 WCF 程序。它托管在 IIS 上,过去运行良好,但最近(我猜是在一些 windows 更新之后),客户端在尝试连接服务器时报告了以下错误消息:

Error occurs during register duplex connect service. Error msg: There was no endpoint listening at net.tcp://localhost/xxx/Duplex.svc/tcp that could accept the message. This is often caused by an incorrect address or SOAP action. See InnerException, if present, for more details.

我可以在网络浏览器中成功打开“http://localhost/xxx/Duplex.svc”。事件日志中没有记录错误,net.tcp 协议已添加到我的 Web 应用程序中,net.tcp 绑定已添加到默认网站中。 net.tcp Listener Adapter 服务正在运行。

我可以为这个问题做些什么吗?最近是否有任何 Windows 更新会导致此问题?欢迎提出任何建议。

下面是我的服务器配置

<system.serviceModel>
    <bindings>
        <netTcpBinding>
            <binding name="tcpCon" closeTimeout="00:03:00" openTimeout="00:03:00" sendTimeout="00:03:00" listenBacklog="2147483647" maxBufferPoolSize="2147483647" maxBufferSize="2147483647" maxConnections="2147483647" maxReceivedMessageSize="2147483647">
                <readerQuotas maxDepth="32" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
                <security mode="None" />
            </binding>
        </netTcpBinding>
    </bindings>
    <services>
        <service behaviorConfiguration="ServiceBe" name="UpdateService.Duplex">
            <endpoint address="tcp" behaviorConfiguration="EndpointBe" binding="netTcpBinding" bindingConfiguration="tcpCon" name="tcp" contract="UpdateServiceInterface.IDuplex" />
            <endpoint kind="udpDiscoveryEndpoint" />
        </service>
    </services>
    <behaviors>
      <endpointBehaviors>
        <behavior name="EndpointBe">
          <endpointDiscovery>
            <scopes>
              <add scope="http://xxxxxx" />
            </scopes>
          </endpointDiscovery>
        </behavior>
      </endpointBehaviors>
      <serviceBehaviors>
        <behavior name="ServiceBe">
          <serviceDiscovery />
          <serviceMetadata httpGetEnabled="false" />
          <serviceDebug includeExceptionDetailInFaults="true" />
          <serviceThrottling maxConcurrentCalls="2147483647" maxConcurrentSessions="2147483647" maxConcurrentInstances="2147483647" />
          <dataContractSerializer maxItemsInObjectGraph="2147483647" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <protocolMapping>
      <add binding="basicHttpsBinding" scheme="https" />
    </protocolMapping>
  </system.serviceModel>
  <system.webServer>

【问题讨论】:

根据您的描述,这可能与本次更新有关,您的配置文件是什么? @DingPeng,附上我的配置文件。你知道任何更新都会导致这个问题吗? 我不确定这个问题是否是由 Windows 更新引起的。我的 windows 版本也是最新的,但我没有遇到这个问题。你的 windows 版本是多少? @DingPeng 我有两台电脑都遇到这个问题,都是windows 10 1909。在其他电脑(windows 10 1809, 1909, 2004)上,程序可以运行。 我尝试使用 windows 10 1909 作为客户端来重现这个问题,但它没有重现。建议你升级到win10 2004。 【参考方案1】:

我终于找到了根本原因。默认的 NetTcp 端口 808 被英特尔显卡驱动程序占用。看到这个link。 我在英特尔论坛上提交了ticket,根据他们的回复,这个问题已经在最新的驱动版本中修复了。

【讨论】:

以上是关于在 net.tcp://url 上没有可以接受消息的端点侦听。这通常是由不正确的地址或 SOAP 操作引起的的主要内容,如果未能解决你的问题,请参考以下文章

在“.svc”上没有可以接受该消息的端点

没有在 (url) 处侦听的端点可以接受消息

没有终结点在侦听可以接受消息的...另外一种排错方式

wcf 由 http 更改为 https 返回404,没有终结点在侦听可以接受消息的

怎么让一个非窗口组件可以接受来自Windows的消息

如何设置 ActiveMQ 停止接受消息?