Я искал в Интернете последние 2-3 дня и до сих пор не могу выяснить это - так что теперь я прихожу к вам, ребята, в надежде, что вы знаете решение.
Я пытаюсьсделать поддельный сервис SOAP для клиента и сделать сервис SOAP в visual studio.Ниже приведен код для действия SOAP, которое необходимо смоделировать.
[WebService(Namespace = "http://mynamespace.com/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
public class MyServiceStub1 : System.Web.Services.WebService, MyServiceBindingSoap
{
[WebMethod]
[SoapDocumentMethod(Action = "http://mynamespace.com/MySoapAction",
ParameterStyle = SoapParameterStyle.Bare)]
[return: System.Xml.Serialization.XmlElementAttribute("SomeWrapperXML")]
public MyActualResponseType MyServiceRequest(
[XmlElement(ElementName = "MyRequestName")] MyServiceRequestType myServiceRequest)
{
return new MyActualResponseType();
}
И я получаю следующий ответ
<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>
<SomeWrapperXML">
<MyActualResponseType>
</MyActualResponseType>
</SomeWrapperXML>
</soap:Body>
</soap:Envelope>
Однако мои клиенты ожидают, что ответ будет выглядеть следующим образом
<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>
<MyActualResponseType>
</MyActualResponseType>
</soap:Body>
</soap:Envelope>
И так как я не могу изменить код на стороне клиента, я должен исправить это со своей стороны.Можно ли как-нибудь избежать использования в своем ответе тега XML «SomeWrapperXML»?
Установка XmlElementAttribute ("") не помогла, и ее полное отсутствие просто сделает его по умолчанию чем-то другим.Я также посмотрел на MSDN post для изменения сообщения SOAP, но это решение кажется немного хакерским.