メッセージ コントラクトをパラメーターとして使用する WCF を開発しました。それらの WSDL を生成すると、カスタム名前空間で MessageContract の名前空間属性をオーバーライドしているにもかかわらず、WCF がhttp://schemas.datacontract.org/2004/07/ Namesapce を追加するメッセージ コントラクトの一部が追加されます。デフォルトの名前空間 ( http://schemas.datacontract.org/2004/07/ )をオーバーライドするのを手伝ってください。
コントラクトと WSDL のサンプル コードを次に示します。
[ServiceBehavior(Namespace="http://www.example.com/unh0/xwds/wd/service/0")]
public class WithholdingDeterminationLiteService : IWithholdingDeterminationLiteService
{
public withholdingDeterminationResponse WithholdingDeterminationLite(withholdingDeterminationLiteRequest request)
{
throw new NotImplementedException();
}
}
[MessageContract(WrapperNamespace = "http://www.example.com/unh0/xwds/wd/lite/request/1")]
public class withholdingDeterminationLiteRequest : baseVersionableType
{
…
private withholdingDeterminationLiteRequestTrade tradeField;
…
/// <remarks/>
[MessageBodyMember(Namespace = "http://example.com/xods/common/1")]
public withholdingDeterminationLiteRequestTrade trade
{
Get { return this.tradeField; } set { this.tradeField = value; }
}
…
}
これから生成される WSDL には
<wsdl:definitions …>
<wsdl:types>
<xsd:schema elementFormDefault="qualified" targetNamespace="http://www.example.com/unh0/xwds/wd/lite/request/1">
<xsd:element name="withholdingDeterminationLiteRequest">
<xsd:complexType>
<xsd:sequence>
…
<xsd:element xmlns:q2="http://schemas.datacontract.org/2004/07/" minOccurs="1" name="trade" type="q2:withholdingDeterminationLiteRequestTrade"/>
…
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<xsd:schema xmlns:tns="http://schemas.datacontract.org/2004/07/" elementFormDefault="qualified" targetNamespace="http://schemas.datacontract.org/2004/07/">
…
<xsd:complexType name="withholdingDeterminationLiteRequestTrade">
…
</xs
d:complexType>
<xsd:element name="withholdingDeterminationLiteRequestTrade" type="tns:withholdingDeterminationLiteRequestTrade"/>
..
</xsd:schema>
</wsdl:types>
…
</wsdl:definitions>
どんな助けでも大歓迎です。