我可以在Envelope / Header / Security元素中添加和读取自定义标题吗?我尝试使用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头。
答案 0 :(得分:0)
创建自定义消息编码器:http://msdn.microsoft.com/en-us/library/ms751486.aspx。
您可以访问编码器的WriteMessage覆盖中的邮件头。请注意,Message的Headers属性不包含Security标头(尽管这可能取决于您使用的安全类型)。使用Message.WriteMessage(XmlWriter)将消息写入流或文件。流/文件将在通过线路发送之前包含消息的内容,包括Security元素。从那里,您可以根据需要修改您的消息并返回包含您的更改的ArraySegment。