我有C#.Net 2.0 App,它是通过WebReferences添加到项目中的SOAP Web服务的客户端。 .Net创建了方便的包装类,扩展了SoapHttpClientProtocol,因此隐藏了通信中的XML和序列化/反序列化SOAP XML请求/响应等所有内容。
我需要将请求和响应记录到WebServices,特别是我希望从HTTP响应的响应中获取HTTP状态代码。
到目前为止,我已实现SOAP扩展并获取原始SOAP XML请求/响应,但是我无法获取通信的HTTP SOAP响应的HTTP状态代码?
编辑:所以我拥有的是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);
}
EDIT2: 所以我的问题通常是我有HTTP状态500的响应,它实际上传递成功,而不会抛出WebException,由于上面的代码,这对我不起作用,我想检测这种情况,这就是为什么我需要HTTP状态代码。
HTTP/1.1 500 Internal Server Error