1

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

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

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 顺便说一句。

<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 中。

谢谢

4

1 回答 1

0

在包装您的安全性和时间戳的类中将命名空间设置为空

  [DataContract(Namespace = "")]
于 2012-08-17T21:06:08.210 回答