以下は私のasmx Webサービスです
[WebService(Namespace = "http://test.com/test")]
[SoapDocumentService(RoutingStyle = SoapServiceRoutingStyle.RequestElement)]
public class Pilot : System.Web.Services.WebService
{
[WebMethod]
public Attribute[] IsPilotUser(Data Data)
{
//logic here
}
}
[Serializable()]
public class Data
{
public string HumanNo
{
get;
set;
}
}
[Serializable()]
[System.Xml.Serialization.XmlRoot("Attribute")]
public class Attribute
{
[System.Xml.Serialization.XmlElement(Namespace="http://test.com/test")]
public string Name = "UserResult";
[System.Xml.Serialization.XmlElement(Namespace="http://test.com/test")]
public string value
{
get;
set;
}
[System.Xml.Serialization.XmlNamespaceDeclarations]
public System.Xml.Serialization.XmlSerializerNamespaces xmlns = new System.Xml.Serialization.XmlSerializerNamespaces();
public Attribute()
{
xmlns.Add("pf", "http://test.com/test");
xmlns.Add("pf", "http://test.com/test");
}
}
これは、クライアントが消費しようとすると生成される現在の SOAP 応答メッセージです。
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<IsPilotUserResponse xmlns="http://test.com/test">
<IsPilotUserResult>
<pf:Attribute xmlns:pf="http://test.com/test">
<pf:Name>UserResult</pf:Name>
<pf:value>i am value</pf:value>
</pf:Attribute>
</IsPilotUserResult>
</IsPilotUserResponse>
</soap:Body>
</soap:Envelope>
上の 2 つの要素に接頭辞「pf:」がないことに気付いた場合
<IsPFMPilotUserResponse xmlns="http://test.com/test">
<IsPFMPilotUserResult>
このプレフィックスを追加する方法はありますか?