必须保护请求消息。这是合同操作所必需的(' IMyNumericService',' http://tempuri.org/')。必须通过绑定提供保护(' BasicHttpBinding',' http://tempuri.org/')。
当我尝试连接到我已注册我的服务的主机时,我收到了上述异常。但主机正在工作,当我尝试从客户端应用程序连接它显示异常
答案 0 :(得分:0)
启用WCF中的客户端和服务安全性。您可以在WCF中的消息,故障,操作和/或服务级别设置通过线路发送的消息的保护级别。有三个消息ProtectionLevel属性flavor要设置为属性。这可确保用于服务的任何端点都至少需要此保护级别。
无 纯文本在电线上传播。 标志 邮件已经过数字签名。 确保不对邮件进行任何修改。 该消息仍然是纯文本。 EncryptAndSign 签名之前,邮件已加密。 确保不对邮件进行任何修改并加扰。 例如,如果EchoService在ServiceContract级别上设置了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保护级别。