Отслеживание / регистрация SOAP XML-запроса и ответа и кода состояния HTTP из клиентского приложения SOAP .Net
У меня есть приложение C# .Net 2.0, которое является клиентом веб-сервисов SOAP, добавленных в проект через WebReferences. .Net создает удобные классы-обертки, расширяющие SoapHttpClientProtocol, так что все, как XML и сериализация / десериализация запроса / ответа SOAP XML в сообщении, скрыто.
Мне нужно зарегистрировать запрос и ответ на веб-сервисах, и особенно я хочу получить коды состояния HTTP из ответа HTTP-связи.
До сих пор я реализовал расширение SOAP и получил необработанные запросы / ответы SOAP XML, однако я не могу получить код состояния HTTP ответа HTTP SOAP сообщения?
РЕДАКТИРОВАТЬ: Итак, у меня есть экземпляр SoapHttpClientProtocol (сгенерированный WSDL), и я хочу получить код состояния HTTP из сообщения.
Я декомпилировал
private object[] ReadResponse(SoapClientMessage message, WebResponse response, Stream responseStream, bool asyncCall)
Любопытно, что есть это условие, которое на самом деле не выдает ошибку, когда статус 500?
if (num1 >= 300 && num1 != 500 && num1 != 400)
{
throw new WebException(RequestResponseUtils.CreateResponseExceptionString(httpWebResponse, responseStream), null, WebExceptionStatus.ProtocolError, httpWebResponse);
}
РЕДАКТИРОВАТЬ 2: Таким образом, моя проблема, как правило, в том, что у меня есть ответ с HTTP-статусом 500, который фактически проходит как успех, без выброса WebException, из-за кода выше, который не работает для меня, я хочу обнаружить такую ситуацию, поэтому я нужен код статуса HTTP.
HTTP/1.1 500 Internal Server Error
1 ответ
Если вам нужна Http-оболочка для запроса / ответа, вы можете попробовать что-то вроде веб-API Call в C#, используя.NET Framework 3.5.