【发布时间】:2015-10-22 11:40:32
【问题描述】:
我有 C# .Net 2.0 应用程序,它是通过 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)
奇怪的是里面有这个条件,其实在status 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
【问题讨论】:
标签: c# .net http soap soap-extension