我可以在创建原始Soap XML时删除默认命名空间吗?

时间:2012-08-17 20:48:30

标签: c# xml wcf soap xml-serialization

我正在尝试向WCF服务发送soap请求。我正在使用System.ServiceModel.Channels.Message.CreateMessage()方法构建soap请求。

我没有深入建立身体,但这就是我所拥有的......

Message msg = Message.CreateMessage( MessageVersion.Soap11WSAddressing10, "MethodName" );
msg.Headers.MessageId = new UniqueId( Guid.NewGuid().ToString() );
msg.Headers.Add( Message.CreateHeader( "Security", "",
    new Security()
    {
        TimeStamp = new TimeStampType() {
            Created = DateTime.Now,
            Expires = Created.AddDays( 1 )
        },
        UsernameToken = new UsernameToken() {
            Username = "stackoverflow",
            Password = new Password() {
                Type = "hashed",
                Value = "Password"
            }
        }
     } ) ) );

string s = msg.ToString();

当我运行它时,我得到以下输出。我正在使用Visual Studio XML Visualizer btw。

<s:Envelope>
    <s:Header>
        <Action>MethodName</Action>
        <MessageID>GUIDVALUE</MessageID>
        <Security>
            <Timestamp xmlns="http://schemas.datacontract.org/2004/07/ConsoleApplication1">
               .....
    </s:Header>
    <s:Body />
</s:Envelope>

我的问题是,我可以从xml中删除xmlns =“http://schemas.datacontract.org/2004/07/ConsoleApplication1”吗?它显示在Timestamp和UsernameToken中。

由于

1 个答案:

答案 0 :(得分:0)

在datacontract中将Namespace设置为空 在包装安全性和时间戳的类中

  [DataContract(Namespace = "")]