【问题标题】:Add custom header into Security element with WCF使用 WCF 将自定义标头添加到安全元素中
【发布时间】:2010-07-19 22:42:26
【问题描述】:

我可以在信封/标题/安全元素中添加和读取自定义标题吗?我尝试使用 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 标头。

【问题讨论】:

    标签: wcf saml soapheader


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-12-03
      • 2014-10-07
      • 2017-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多