Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Wcf中,客户端未连接到主机_Wcf - Fatal编程技术网

在Wcf中,客户端未连接到主机

在Wcf中,客户端未连接到主机,wcf,Wcf,请求消息必须受到保护。这是合同(“IMyNumericService”和“IMyNumericService”)运作所必需的。必须由绑定(“BasicHttpBinding”和“BasicHttpBinding”)提供保护 当我试图连接到我已注册服务的主机时,我遇到了上述异常。但主机正在工作,当我尝试从客户端应用程序连接时,它在WCF的客户端和服务安全上显示了上述异常。您可以在WCF中的消息、故障、操作和/或服务级别设置通过导线发送的消息的保护级别。有三种消息ProtectionLevel属性样

请求消息必须受到保护。这是合同(“IMyNumericService”和“IMyNumericService”)运作所必需的。必须由绑定(“BasicHttpBinding”和“BasicHttpBinding”)提供保护


当我试图连接到我已注册服务的主机时,我遇到了上述异常。但主机正在工作,当我尝试从客户端应用程序连接时,它在WCF的客户端和服务安全上显示了上述异常。您可以在WCF中的消息、故障、操作和/或服务级别设置通过导线发送的消息的保护级别。有三种消息ProtectionLevel属性样式可设置为属性。这确保了服务使用的任何端点都至少需要此保护级别

没有 在导线上传输的纯文本。 签名 该消息是经过数字签名的。 确保不修改消息。 消息仍然是纯文本。 加密符号 在签名之前,对消息进行加密。 确保消息不被修改,并且被加扰。 例如,如果EchoService在ServiceContract级别上设置了EncryptAndSign的ProtectionLevel,则具有BasicHttpBinding的端点将无法启动。这是因为BasicHttpBinding在默认情况下不支持此保护级别(可以启用)。 [ServiceContract(ProtectionLevel=ProtectionLevel.EncryptAndSign)] 公共接口IEchoService { [运营合同(IsOneWay=true)] 无效注册表客户端(Guid)

[FaultContract(类型(EchoFault))]
[经营合同]
EchoMessage Echo(EchoMessage消息);
[经营合同]
列出GetAllEchos();
}
对BasicHttpBinding端点使用此保护级别会导致主机上出现异常

System.InvalidOperationException:必须保护请求消息。这是合同运作的要求[…]。必须由绑定[…]提供保护


但是,如果我们将端点绑定更改为wsHttpBinding,那么服务运行良好。这是因为WsHttpBinding默认支持EncryptAndSign保护级别。

看起来像是绑定不匹配。请包括您的服务配置和客户端配置。现在它适用于WSHttpBinding,但不适用于BasicHttpBindingSo。。。。问题解决了?如果没有,请发布您的配置,以便我们可以帮助您:)我知道了,由于安全级别的原因,我的服务不允许用于BasicHttpBinding,但它允许我通过WSHttpBinding进行交换查看此链接任何人对此有疑问,如果发现任何更改,您可以参考上面的链接建议。。!!
    [FaultContract(typeof(EchoFault))]
    [OperationContract]
    EchoMessage Echo(EchoMessage message);

    [OperationContract]
    List<EchoMessage> GetAllEchos();
}