1

我可以在信封/标题/安全元素中添加和读取自定义标题吗?我尝试使用 MessageHeader 属性,但这不允许我将标题放在 Security 元素中。

我创建了一个实现 IClientMessageInspector 的类,认为我可以像这样访问 Security 标头:

public object BeforeSendRequest(ref Message request, IClientChannel channel)
{
   MessageBuffer buffer = request.CreateBufferedCopy(Int32.MaxValue);
   request = buffer.CreateMessage();

   Message originalMessage = buffer.CreateMessage();
   foreach (MessageHeader h in originalMessage.Headers)
   {
      Console.WriteLine("\n{0}\n", h);
   }

   return null;
}

但是在 originalMessage.Headers 对象中不存在 Security 标头。

4

1 回答 1

0

创建自定义消息编码器:http: //msdn.microsoft.com/en-us/library/ms751486.aspx

您可以在编码器的 WriteMessage 覆盖中访问消息标头。请注意,Message 的 Headers 属性将不包含 Security 标头(尽管这可能取决于您使用的安全类型)。使用 Message.WriteMessage(XmlWriter) 将消息写入流或文件。流/文件将包含在通过网络发送之前的消息内容,包括安全元素。从那里,您可以根据需要修改您的消息并返回一个包含您的更改的 ArraySegment。

于 2011-09-29T20:41:47.500 回答