【问题标题】:Custom Message Encoder WCF - invalid signature自定义消息编码器 WCF - 无效签名
【发布时间】:2020-05-12 07:00:06
【问题描述】:

我尝试使用与@Misiu 相同的服务,例如: Custom MessageEncoder add attributes to message without modifying structure

我知道那个帖子有 3 年,但我希望有人知道答案。
我面临同样的问题。

System.ServiceModel.CommunicationException:向https://dz3.swd.zbp.pl/broker3/services/QueryDz 发出 HTTP 请求时出错。这可能是由于在 HTTPS 情况下未使用 HTTP.SYS 正确配置服务器证书。这也可能是由于客户端和服务器之间的安全绑定不匹配造成的。 ---> System.Net.WebException:底层连接已关闭:发送时发生意外错误。 ---> System.IO.IOException: Unable to read data from the transport connection: 一个现有的连接被远程主机强行关闭。 ---> System.Net.Sockets.SocketException: 现有连接被远程主机强行关闭

【问题讨论】:

    标签: c# .net wcf soap wcf-security


    【解决方案1】:

    我不知道这个问题的来龙去脉。上面的错误主要是我们让服务在HTTPS上工作时没有正确配置服务证书,如错误所说。为了使 WCF 服务在HTTPS 上工作,我们应该添加一个具有传输安全模式的服务端点。

        <services>
          <service name="WcfService3.Service1">
            <endpoint address="" binding="webHttpBinding" bindingConfiguration="mybinding" contract="WcfService3.IService1" behaviorConfiguration="mybeh"></endpoint>
          </service>
        </services>
        <bindings>
          <webHttpBinding>
            <binding name="mybinding">
              <security mode="Transport">
                <transport clientCredentialType="None"></transport>
              </security>
            </binding>
          </webHttpBinding>
    </bindings>
    

    随后,如果WCF项目托管在IIS中,我们应该在IIS站点绑定模块中添加一个https绑定并绑定一个证书。

    如果服务是自托管的,我们可以使用以下命令将证书绑定到特定端口。

    netsh http add sslcert ipport=0.0.0.0:8000 certhash=0000000000003ed9cd0c315bbb6dc1c08da5e6 appid={00112233-4455-6677-8899-AABBCCDDEEFF}
    

    请参考以下文档。
    https://docs.microsoft.com/en-us/dotnet/framework/wcf/feature-details/how-to-configure-a-port-with-an-ssl-certificate
    如果有什么我可以帮忙的,请随时告诉我。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-25
      • 1970-01-01
      • 1970-01-01
      • 2012-02-16
      • 1970-01-01
      • 2016-07-29
      • 2018-08-08
      • 1970-01-01
      相关资源
      最近更新 更多