客户端中的 WCF 服务通过 https 返回 404

Posted

技术标签:

【中文标题】客户端中的 WCF 服务通过 https 返回 404【英文标题】:WCF service in client returns 404 over https 【发布时间】:2020-04-19 19:14:46 【问题描述】:

web.config 服务器上的设置:

<service name="ExporterWebService">
    <endpoint address=""
              binding="basicHttpBinding"
              bindingConfiguration="secureHttpBinding"
              contract="IExporterWebService"/>

    <endpoint address="mex"
              binding="mexHttpsBinding"
              contract="IMetadataExchange" />

<serviceBehaviors>
    <behavior>
        <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
        <serviceDebug includeExceptionDetailInFaults="true" />
    </behavior>
</serviceBehaviors>

而客户app.config 是:

<client>
    <endpoint 
        address="https://sample.coom/webservice/rwar.svc" 
        binding="wsHttpBinding" bindingConfiguration="basicHttpBinding" 
        contract="IRIBExporterWebService.IExporterWebService" 
        name="BasicHttpBinding_IExporterWebService"/>
</client>

<basicHttpBinding>
    <binding name="BasicHttpBinding_IExporterWebService" maxReceivedMessageSize="2147483647">
     <security  mode="Transport">
        <transport clientCredentialType="None"/>
      </security>
    </binding>
</basicHttpBinding>

我正在尝试使用 SSL 测试 WCF,但似乎遗漏了一些东西,我进行了大量搜索,但似乎无法找到我在配置中遗漏的内容,我有一个基本的 WCF 服务托管在IIS,我还有一个测试客户端 Web 应用程序正在调用 WCF 服务。

请帮忙!!! :-)

【问题讨论】:

你添加https绑定到服务器吗? 是的,服务器正常,其他客户端现在使用,只是我客户端出错 你在&lt;wsHttpBinding&gt;绑定like here中有&lt;security mode="Transport"&gt;吗? 你能告诉我们bindingConfiguration="secureHttpBinding"是如何在服务器上配置的吗? @marc_s 亲爱的,服务器中的secureHttpBinding 配置是:&lt;binding name="secureHttpBinding"&gt; &lt;security mode="Transport"&gt; &lt;transport clientCredentialType="None"/&gt; &lt;/security&gt; &lt;/binding&gt; 【参考方案1】:

您应该在添加服务引用时在客户端键入错误的服务地址。 客户端在消费Basichttpbiding创建的服务时不会生成Wshttpbinding创建的服务端点。

<endpoint address=""
          binding="basicHttpBinding"
          bindingConfiguration="secureHttpBinding"
          contract="IExporterWebService"/>

  <endpoint 
    address="https://sample.coom/webservice/rwar.svc" 
    binding="wsHttpBinding" bindingConfiguration="basicHttpBinding" 
    contract="IRIBExporterWebService.IExporterWebService" 
    name="BasicHttpBinding_IExporterWebService"/>

此外,服务器使用空的相对端点地址,而您的客户端使用 webservice 前缀。

<client>
<endpoint 
    address="https://sample.coom/webservice/rwar.svc" 
    binding="wsHttpBinding" bindingConfiguration="basicHttpBinding" 
    contract="IRIBExporterWebService.IExporterWebService" 
    name="BasicHttpBinding_IExporterWebService"/>

此外,请在拨打电话前信任服务器证书以建立安全连接。

【讨论】:

你能解释一下你的意思吗? OP 到底做错了什么,他们应该如何解决这个问题? 好的,伙计。我已经完成了。请帮忙审核。【参考方案2】:

我有一个错误,我们在服务器上通过拖曳地址拖曳 web 服务,我忘记在服务器上设置配置 https webService new 谢谢各位朋友

【讨论】:

以上是关于客户端中的 WCF 服务通过 https 返回 404的主要内容,如果未能解决你的问题,请参考以下文章

WCF分布式4:客户端访问寄宿在IIS中的WCF服务

通过 HTTPS 上的客户端证书对 WCF 请求进行身份验证

WCF中的几种地址总结

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

WCF 通过 MSMQ 到 WCF 请求和响应

WCF 请求返回错误响应