WCF-没有在http localhost上侦听的终结点+由于目标计算机主动拒绝,因此无法建立连接=>;外部网络

本文关键字:拒绝 建立 连接 外部 网络 gt 目标计算机 localhost http 结点 WCF- | 更新日期: 2023-09-27 18:24:13

我在控制台中托管WCF服务时遇到问题。尝试在这里搜索,但找不到这个问题的解决方案,即使它与这里的其他问题类似。

托管非常简单。

C#-主机

WCFSrv = new WCFService();
WCFSrvHost = new ServiceHost(typeof(WCFService));
udaWCFSrvHost.Open();

配置:

 <system.serviceModel>
    <services>
      <service name="WCF_Service.WCFService">
        <endpoint address="" binding="basicHttpBinding" contract="WCF_Service.IWCFService">
          <identity>
            <dns value="localhost" />
          </identity>
        </endpoint>
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
        <host>
          <baseAddresses>
            <add baseAddress="http://localhost:23456/WCFService/" />
          </baseAddresses>
        </host>
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior>
          <serviceMetadata httpGetEnabled="True" httpsGetEnabled="True"/>
          <serviceDebug includeExceptionDetailInFaults="False"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <bindings>
      <basicHttpBinding>
        <binding name="BasicTimeouts" closeTimeout="00:00:30" openTimeout="00:00:30"
          receiveTimeout="00:00:30" sendTimeout="00:00:30" />
      </basicHttpBinding>
    </bindings>
  </system.serviceModel>  

我可以通过WcfTestClient从localhost访问服务,并调用服务提供的方法。

我可以通过WcfTestClient从同一网络访问服务,但不能调用服务提供的方法。一旦我尝试调用方法,我就会收到错误消息:

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

Inner Exception:
No connection could be made because the target machine actively refused it 127.0.0.1:23456
   at System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress)
   at System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, Socket s4, Socket s6, Socket& socket, IPAddress& address, ConnectSocketState state, IAsyncResult asyncResult, Exception& exception)

我试着通过netstat检查是否有23456端口打开,应用程序是否在该端口上侦听,23456端口是否打开并侦听。

当我试图修改基址(而不是localhost:23456,我在网络中放置了服务器的真实IP,例如10.xx.xx.xx)时,我也可以调用方法,但这只是内部解决方案的变通方法。

服务器和端口应向外部网络开放,并可通过互联网访问。我试图从互联网上访问服务,我能够从互联网上获得服务(证明端口是打开的),但由于上面写的问题,我面临着相同的问题=>无法调用方法。

有没有人有同样问题的经验,可以帮助我吗?

WCF-没有在http localhost上侦听的终结点+由于目标计算机主动拒绝,因此无法建立连接=>;外部网络

在注释中回答,请放在此处以确保完整性。

请正确检查服务器上的客户端配置点,而不是localhost。

我是WCF的新手,但最近也遇到了同样的问题。我刚刚为客户端项目制作了一个配置文件,a在那里写下了端点的地址:

 <system.serviceModel>
    <services>
      <service name="WCF_Service.WCFService">
        <endpoint address="" binding="basicHttpBinding" contract="WCF_Service.IWCFService">
          <identity>
            <dns value="localhost" />
          </identity>
        </endpoint>
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
        <host>
          <baseAddresses>
            <add baseAddress="http://localhost:23456/WCFService/" />
          </baseAddresses>
        </host>
      </service>
    </services>

您可以使用此参考:http://dotnetmentors.com/how-to-host-wcf-service-in-iis-7.aspx

在我看来,这很方便。如果不起作用,请尝试重新创建项目。

听起来你绑定到了错误的IP地址,试试这个:

    <host>
      <baseAddresses>
        <add baseAddress="http://0.0.0.0:23456/WCFService/" />
      </baseAddresses>
    </host>

使用0.0.0.0而不是localhost会将您的服务绑定到该主机上的所有IP。

感谢大家的支持

我的问题的解决方案:

不要使用WcfTestClient来测试来自外部网络的服务,至少在我的情况下,我遇到了问题中描述的问题。

对于初学者来说,当你有IIS 托管的服务时,简单的建议

  1. 使用配置文件在项目中定义WCF设置(例如WCF服务库)
  2. 不要忘记将WCF服务项目到Host应用程序的设置复制到app.config中
  3. 当从外部网络进行测试时,使用带有自己的app.config的简单客户端应用程序,其中端点必须指向目标服务

M。

相关文章: