WCF не читает имя базового класса в сообщении мыла - PullRequest
0 голосов
/ 03 мая 2019

Я импортировал 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 #?Прямо сейчас я просто получаю нулевой ответ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...