我们可以通过添加像此
的MessageHeader属性将Message标头添加到WCF消息 [MessageContract]
public class HelloResponseMessage
{
[MessageHeader(ProtectionLevel=EncryptAndSign)]
public string SSN
{
get { return extra; }
set { this.extra = value; }
}
}
第一个问题是,这有多安全,这适用于所有类型的WCF绑定吗?
和第二个问题,是否可以将加密的标题添加到所有消息中并在服务器部分中提取动态类似的内容?
MessageHeader header = MessageHeader.CreateHeader("SessionKey", "ns", _key);
OperationContext.Current.OutgoingMessageHeaders.Add(header);
答案 0 :(得分:2)
您可以使用IServiceBehavior,而IServiceBehavior将使用DispatchMessageInspector。
对于客户端代理,您将创建一个使用IClientMessageInspector的IEndpointBehavior
IClientMessageInspector将实例化MessageHeader或派生类型,并将其添加到BeforeSendRequest方法中的每个请求中。
DispatchMessageInspector将解析AfterReceiveRequest方法中的每个请求,并从那里提取标题。
有一点需要注意的是,我认为这个意图或标题不会记录在WSDL中。我认为您必须使用IWsdlExportExtension接口的自定义实现来控制。
安德鲁