SOAP 応答を送信するために WCF で使用しているデータ型があります。次のようになります。
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<start-call-recording-response xmlns="http://foobar">
<response>true</response>
</start-call-recording-response>
</s:Body>
</s:Envelope>
問題は、名前空間 ( http://foobar
) が要素に表示されないことです。つまり、XmlElementAttibute の名前空間を親クラスの XmlRootAttribute の名前空間とは異なるものに変更しない限りです。start-call-recording-response のクラスは次のとおりです。
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.18033")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(TypeName = "StartcallrecordingresponseType")]
[System.Xml.Serialization.XmlRootAttribute(Namespace = "http://foobar", ElementName = "start-call-recording-responseType")]
public partial class StartcallrecordingresponseType
{
[System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://foobar")]
private bool responseField;
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute(Namespace = "http://foobar", ElementName = "response", IsNullable = false)]
public bool Response
{
get
{
return this.responseField;
}
set
{
this.responseField = value;
}
}
}
Response の上にある XmlElementAttribute の名前空間を、それを含むクラスの名前空間以外のものに変更すると、SOAP エンベロープの . 同じ場合は表示されません。XmlTypeAttributes、XmlRootAttributes、および XmlElementAttributes の多くのバリエーションを試しました。