动态添加加密的WCF邮件头

Ars*_*yan 5 c# wcf

我们可以通过添加像这样的MessageHeader属性将Message头添加到WCF消息

 [MessageContract]
 public class HelloResponseMessage
 {
     [MessageHeader(ProtectionLevel=EncryptAndSign)]
     public string SSN
     {
         get { return extra; }
         set { this.extra = value; }
     }
 }
Run Code Online (Sandbox Code Playgroud)

第一个问题是,这有多安全,这适用于所有类型的WCF绑定吗?

第二个问题,是否有可能将加密的标题添加到所有消息中并在服务器部分中提取动态这样的?

MessageHeader header = MessageHeader.CreateHeader("SessionKey", "ns", _key);
OperationContext.Current.OutgoingMessageHeaders.Add(header);
Run Code Online (Sandbox Code Playgroud)

REA*_*REW 2

您可以使用 IServiceBehavior,而 IServiceBehavior 又将使用 DispatchMessageInspector。

对于客户端代理,您将创建一个 IEndpointBehavior ,它将使用 IClientMessageInspector

IClientMessageInspector 将实例化 MessageHeader 或派生类型,并将其添加到 BeforeSendRequest 方法内的每个请求中。

DispatchMessageInspector 将解析 AfterReceiveRequest 方法内的每个请求并从中提取标头。

需要注意的是,我认为该意图或标头不会记录在 WSDL 中。为此,我认为您必须使用 IWsdlExportExtension 接口的自定义实现来进行控制。

安德鲁