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

Posted

技术标签:

【中文标题】没有在 (url) 处侦听的端点可以接受消息【英文标题】:There was no endpoint listening at (url) that could accept the message 【发布时间】:2021-08-29 02:21:41 【问题描述】:

我正在构建一个 ASP.NET 网站 - 这是一个包含几个项目、一个数据库和一个 Web 服务的解决方案。一切正常,但上次我尝试运行该项目时,出现以下错误:

There was no endpoint listening at http://localhost:[number]/BooksWS.svc that could accept the
message. This is often caused by an incorrect address or SOAP action. See InnerException, 
if present, for more details.

内部异常说:

Unable to connect to the remote server

这个错误是突然出现的,所以我不确定我应该提供哪些额外信息。有谁知道为什么会发生这种情况?

我想即使是一般性的答案也会有所帮助,这是我在网络上找到的有关此错误的唯一信息,涉及 WCF。

【问题讨论】:

远程服务没有启动,或者你打错了端口。 @LynnCrumbling,我也怀疑端口错误。你知道我该如何解决吗? 从这条消息中,您点击了 5758。您选择了吗?你使用的是 Visual Studio 的开发服务器,那是随机端口吗? 一件好事是: 1) 运行另一个 VisualStudio 实例,(如果您也控制应用程序的服务器端)。 2) 在该 Visual Studio 中,以调试模式(内部 IIS(或其他)服务器环境)启动服务器应用程序。 3)确保它运行并且它运行在你想要它的位置(地址,端口)。 4)重新配置您的解决方案(在本例中为“客户端”,以便它尝试连接到“服务器视觉工作室”)。 5)运行它,如果它通信良好,那么问题出在网络/防火墙/权限或服务服务器刚刚没有启动。是的,大部分都在 Web/App.config 中 @Cheshie 你错过了重点,我假设你使用 VisualStudio 在(示例)localhost:5758 上启动服务器,只是为了确保错误不在你的一方应用程序,而不是在通信方面。如果您不控制服务器应用程序,那么您可以模拟它(或其行为),即运行一个小服务,伪装成您要调用的服务(它可以明显更小,只是为了找到出来测试)。如果你进展顺利,打电话给它,得到回应,那么你就知道问题出在哪里了,我想这也很有帮助。 【参考方案1】:

进入你网站的webconfig页面,寻找标签端点,并检查地址属性中的端口,可能是端口号发生了变化

【讨论】:

【参考方案2】:

我刚刚遇到的另一种情况 - 当请求大小大于 IIS 中设置为限制的请求大小时,您也会收到该错误。

检查 IIS 请求限制,如果低于您的需要,请增加它。 以下是检查和更改 IIS 请求限制的方法:

    打开 IIS 点击您的网站和/或映射的应用程序 单击功能视图,然后单击请求过滤 单击 - 编辑功能设置。

我刚刚在堆栈中还发现了另一个线程 IIS 7.5 hosted WCF service throws EndpointNotFoundException with 404 only for large requests

【讨论】:

通过 web.config 设置值似乎可行。\ 嗨,这个人就是我在应用和更改这些设置后至少 36 小时一直在为这个问题而苦苦挣扎的爱人。【参考方案3】:

另一种可能的情况是确保您已安装 WCF 激活 功能。 转到服务器管理器 > 功能 > 添加功能

【讨论】:

【参考方案4】:

简短回答,但您是否打开了 Skype?默认情况下,这会特别干扰使用端口:80 的 ASP.NET(以及一般的本地主机)。

在 Windows 中:转到工具 -> 选项 -> 高级 -> 连接并取消选中“使用端口 80 和 443 作为传入连接的替代选项”框。

【讨论】:

【参考方案5】:

试试这个:

删除服务实例。 创建服务的新实例。

有时端口更改并产生错误。

【讨论】:

【参考方案6】:

我尝试了一堆这样的想法来让 HTTPS 工作,但对我来说关键是添加协议映射。这是我的服务器配置文件的样子,它适用于 HTTP 和 HTTPS 客户端连接:

  <system.serviceModel>
    <protocolMapping>
      <add scheme="https" binding="wsHttpBinding" bindingConfiguration="TransportSecurityBinding" />
    </protocolMapping>
    <services>
      <service name="FeatureService" behaviorConfiguration="HttpsBehavior">
        <endpoint address="soap" binding="wsHttpBinding" contract="MyServices.IFeature" bindingConfiguration="TransportSecurityBinding" />
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="HttpsBehavior">
          <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="true" />
        </behavior>
        <behavior name="">
          <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="false" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <bindings>
      <wsHttpBinding>
        <binding name="TransportSecurityBinding" maxReceivedMessageSize="2147483647">
          <security mode="Transport">
            <transport clientCredentialType="None" />
          </security>
        </binding>
      </wsHttpBinding>
    </bindings>
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
  </system.serviceModel>

【讨论】:

【参考方案7】:

当我试图从本地的 Windows 应用程序调用托管在新服务器中的 WCF 服务时,我遇到了这个问题。我收到了同样的错误消息,最后得到了这个“无法建立连接,因为目标机器主动拒绝了它 127.0.0.1:8888”。我不知道我是错的还是正确的,但我觉得每当服务器从我的 Windows 应用程序获取请求时,它都会路由到其他东西。所以我做了一些阅读并在服务宿主项目的Web.config中添加了以下内容。在那之后,一切都像魔术一样运作。

<system.net>
    <defaultProxy enabled="false">
    </defaultProxy>
</system.net>

【讨论】:

【参考方案8】:

如果您使用自定义绑定,请确保在配置文件中为自定义绑定(服务器和客户端)设置相同的名称

<bindings>
<customBinding>
 <binding name="BufferedHttpServerNoAuth" closeTimeout="00:10:00" openTimeout="00:10:00" receiveTimeout="00:10:00" sendTimeout="00:10:00">
          <gzipMessageEncoding innerMessageEncoding="textMessageEncoding" MaxArrayLength="10485760" MaxBytesPerRead="31457280" MaxStringContentLength="102400000" />
          <httpsTransport hostNameComparisonMode="StrongWildcard" manualAddressing="False" maxReceivedMessageSize="31457280" authenticationScheme="Anonymous" bypassProxyOnLocal="True" realm="" useDefaultWebProxy="False" />
</binding>
</customBinding>
</bindings>

两者的绑定名称“BufferedHttpServerNoAuth”应该相同。

希望这会对某人有所帮助

【讨论】:

【参考方案9】:

这是古老的历史,但我刚刚遇到了这个问题,我的解决方法是在 IIS 中回收网站的应用程序池。一次轻松修复。

【讨论】:

【参考方案10】:

我将我的网站和应用绑定更改为新端口,它对我有用。由于网站使用的端口不可用,可能会发生此错误。因此,有时只需重新启动机器即可解决问题

-编辑-

替代(更简单)的解决方案:reference

    获取正在使用端口的进程的 PID CMD 命令- netstat -aon | findstr 0.0:80

    使用 PID 获取进程名称 -

任务列表 /FI "PID eq"

    打开任务管理器,找到这个进程并停止它。

(注意-确保您没有停止 Net.tcp 服务)

【讨论】:

您也可以通过运行“taskkill /F /IM OneApp.IGCC.WinService.exe”或“taskkill /F /PID 4188”来停止进程【参考方案11】:

我通过传递与端点的绑定来解决它。 "http://abcd.net/SampleFileService.svc/basicHttpWSSecurity"

【讨论】:

【参考方案12】:

单击您创建的服务,右键单击它,然后在重建应用程序后选择更新引用

【讨论】:

以上是关于没有在 (url) 处侦听的端点可以接受消息的主要内容,如果未能解决你的问题,请参考以下文章

WCF - 在 net.tcp://..../Querier.svc 上没有可以接受消息的端点侦听

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

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

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

没有终结点在侦听可以接受消息的 http://erp-test/5.0/U9WorkflowService。这通常是由于不正确的

每次一开机就会弹出一个对话框说应用程序发生了无法处理的异常,没有终结点在侦听可以接受消息的