创建MessageHeader而不序列化XML内容

时间:2013-03-05 15:32:04

标签: wcf serialization soap .net-3.5

我正在尝试将我的请求标头的时间戳添加到第三方Java Web服务,如下所示:

<wsu:Timestamp xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="Timestamp-1120">
    <wsu:Created>2013-03-05T07:18:42.672Z</wsu:Created>
    <wsu:Expires>2013-03-05T07:23:42.672Z</wsu:Expires>
</wsu:Timestamp>

我正在使用此代码 -

Message request;    

// TESTVALUE
string content = "<Created>2013-03-05T07:18:42.672Z</Created><Expires>2013-03-05T07:23:42.672Z</Expires>";

MessageHeader msgHeader = MessageHeader.CreateHeader("Timestamp", "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd", content);
request.Headers.Add(msgHeader);

问题是它将我的内容序列化为此,我不知道如何解决这个问题 -

    <Timestamp xmlns="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
         &lt;Created&gt;2013-03-05T07:18:42.672Z&lt;/Created&gt;&lt;Expires&gt;2013-03-05T07:23:42.672Z&lt;/Expires&gt;
    </Timestamp>

我尝试添加两个XElement,但问题是我只能提供其中一个..

1 个答案:

答案 0 :(得分:1)

问题是WCF正在编码您在标题中指定为内容的内容。您可以创建一个自定义的“Timestamp”类来处理Timestamp的内容,而不是使用字符串。您可以使用DataContract来序列化它,但最糟糕的情况是您必须在新类中使用自定义XML序列化。