Я импортировал wsdl от третьей стороны и возвращаю имя базового класса в сообщении SOAP вместо фактического имени класса для ситуаций с ошибками.Это вызывает нулевой ответ, даже если возвращается SOAP.
Так выглядит класс в файле Reference.cs.
public partial class GetStatusResponse :BaseResponse {
// There is nothing in the child class
}
SOAP-сообщение, которое возвращается дляошибка:
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<ns0:BaseResponse Status="Error" xmlns:ns0="myNameSpace">
<ns0:Error>
<ns0:ErrorStatus>UnhandledError</ns0:ErrorStatus>
<ns0:ErrorMessage>INVALID_CODE</ns0:ErrorMessage>
</ns0:Error>
</ns0:BaseResponse>
</S:Body>
</S:Envelope>
Когда все успешно, возвращается следующее сообщение SOAP и все работает.
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<ns0:GetStatusResponse Status="Success" xmlns:ns0="myNameSpace">
<ns0:Success>
<ns0:ID>1234567890</ns0:ID>
</ns0:Success>
</ns0:GetStatusResponse>
</S:Body>
</S:Envelope>
Как я могу изменить файл Reference.cs, чтобы он знал, что BaseResponse в SOAPдействительно GetStatusResponse, так что он поднимет его и вернет возвращаемый объект в коде C #?Прямо сейчас я просто получаю нулевой ответ.