【问题标题】:In Wcf client is not connecting to the host在 Wcf 客户端未连接到主机
【发布时间】:2014-11-29 07:37:33
【问题描述】:

请求消息必须受到保护。这是合约操作所要求的 ('IMyNumericService','http://tempuri.org/')。保护必须由绑定提供('BasicHttpBinding','http://tempuri.org/')。

当我尝试连接到我注册了我的服务的主机时,我遇到了上述异常。但是主机正在工作,当我尝试从客户端应用程序连接时,它显示上述异常

【问题讨论】:

  • 看起来像绑定不匹配。请包括您的服务配置和客户端配置。
  • 现在它适用于 WSHttpBinding ,但不适用于 BasicHttpBinding
  • 所以.... 解决了吗?如果没有,请发布您的配置,以便我们为您提供帮助:)
  • 我明白了,由于安全级别,BasicHttpBinding 不允许我的服务,但它允许我通过 WSHttpBinding 进行交换,请参阅此链接remondo.net/configure-messageprotectionlevel-wcfmsdn.microsoft.com/en-us/library/aa347692.aspx
  • 有这个疑问的可以参考以上链接

标签: wcf


【解决方案1】:

关于 WCF 中的客户端和服务安全性。您可以在 WCF 中的消息、故障、操作和/或服务级别设置通过线路发送的消息的保护级别。可以将三种消息 ProtectionLevel 属性风格设置为属性。这可确保用于服务的任何端点都至少需要此保护级别。

无 通过网络传输的纯文本。 标志 消息经过数字签名。 确保不修改消息。 消息仍然是纯文本。 加密和签名 在签名之前,消息被加密。 确保不修改消息并加扰。 例如,如果在 ServiceContract 级别上将 EchoService 设置为 EncryptAndSign 的 ProtectionLevel,则具有 BasicHttpBinding 的端点将无法启动。这是因为 BasicHttpBinding 默认不支持此保护级别(可以启用)。 [ServiceContract(ProtectionLevel = ProtectionLevel.EncryptAndSign)] 公共接口 IEchoService { [OperationContract(IsOneWay = true)] void RegisterClient(Guid guid);

    [FaultContract(typeof(EchoFault))]
    [OperationContract]
    EchoMessage Echo(EchoMessage message);

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

将此保护级别与 BasicHttpBinding 端点一起使用会导致主机出现异常。

System.InvalidOperationException:请求消息必须受到保护。这是合同操作所必需的[..]。必须由绑定 [..] 提供保护。

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

【讨论】:

  • 如果您发现任何更改建议..!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-10-27
  • 1970-01-01
  • 2017-10-05
  • 2011-11-22
  • 2011-06-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多