没有在 (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,没有终结点在侦听可以接受消息的
没有终结点在侦听可以接受消息的 http://erp-test/5.0/U9WorkflowService。这通常是由于不正确的