1

SOAP 要求を WCF サービスに送信しようとしています。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 を使用しています。

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

私の質問は、xmlns="http://schemas.datacontract.org/2004/07/ConsoleApplication1" を xml から削除できますか? Timestamp と UsernameToken に表示されます。

ありがとう

4

1 に答える 1

0

セキュリティとタイムスタンプをラップするクラスのdatacontractで名前空間を空に設定します

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