我正在尝试向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"
}
}
}, new SecuritySerializer() ) ) ); // The serializer inherits XmlObjectSerializer. Internally it is using the XmlSerializer class.
string s = msg.ToString();
当我运行这个程序时,我会得到以下输出。顺便说一句,我使用的是Visual Studio XML Visualizer。
<s:Envelope>
<s:Header>
<Action>MethodName</Action>
<MessageID>GUIDVALUE</MessageID>
<Security>
<Security>
.....
</Security>
</Security>
</s:Header>
<s:Body />
</s:Envelope>
我的问题是,如何删除其中一个安全元素?我应该有一个,但我有两个,因为我第一次将元素名称传递给Message.CreateHeader()方法,第二个是从序列化程序生成的。
提前感谢