Я звоню в службу SOAP, работающую в WildFly (JBoss), которая включает в себя эту операцию:
<wsdl:operation name="checkIn">
<wsdl:documentation>blah</wsdl:documentation>
<wsdl:input message="tns:checkInRequestMsg" />
<wsdl:output message="tns:checkInResponseMsg" />
<wsdl:fault name="error" message="tns:errorMsg" />
</wsdl:operation>
Когда я вызываю эту службу в Fiddler с недопустимым запросом, я получаю ответ HTTP 500, который выглядит по существувот так (я немного отредактировал):
<?xml version="1.0" encoding="utf-16"?>
<SOAP:Envelope xmlns:tns="..." xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP:Body>
<tns:error version="1.0">
<reason>...</reason>
</tns:error>
</SOAP:Body>
</SOAP:Envelope>
Когда я вызываю эту службу с тем же недопустимым запросом, используя прокси-сервер службы .NET WCF, сгенерированный Visual Studio 2015, я не получаю исключение .NETи ответ нулевой.Я не могу разобрать ответ об ошибке.
Прокси-сервер определяет операцию следующим образом:
// CODEGEN: Generating message contract since the operation checkIn is neither RPC nor document wrapped.
[System.ServiceModel.OperationContractAttribute(Action="urn:checkIn", ReplyAction="*")]
[System.ServiceModel.FaultContractAttribute(typeof(ConsoleApplication2.ServiceReference1.ServiceError), Action="urn:checkIn", Name="error")]
[System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]
ConsoleApplication2.ServiceReference1.checkInResponse checkIn(ConsoleApplication2.ServiceReference1.checkInRequest request);
Как я могу вызвать службу в .NET, чтобы вместо этого я мог получать проанализированные ответы об ошибкахполучить нулевые ответы?Я хотел бы иметь возможность использовать сгенерированный прокси .NET WCF и избежать необходимости разбора необработанного XML-ответа!