Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 跟踪/记录SOAP.Net客户端应用程序中的SOAP XML请求和响应以及HTTP状态代码_C#_.net_Http_Soap_Soap Extension - Fatal编程技术网

C# 跟踪/记录SOAP.Net客户端应用程序中的SOAP XML请求和响应以及HTTP状态代码

C# 跟踪/记录SOAP.Net客户端应用程序中的SOAP XML请求和响应以及HTTP状态代码,c#,.net,http,soap,soap-extension,C#,.net,Http,Soap,Soap Extension,我有一个C#.Net 2.0应用程序,它是通过WebReferences添加到项目中的SOAP web服务的客户端。Net创建了扩展SoapHttpClientProtocol的方便的包装器类,以便隐藏通信中的XML和SOAP XML请求/响应的序列化/反序列化等所有内容 我需要记录对WebServices的请求和响应,特别是我希望从HTTP通信的响应中获得HTTP状态代码 到目前为止,我已经实现了SOAP扩展并获得了原始的SOAP XML请求/响应,但是我无法获得通信的HTTP SOAP响应的

我有一个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)
奇怪的是,其中有这样一个条件,当状态为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

如果您想要请求/响应的Http包装,可以尝试类似的方法。

谢谢您的回答。我使用的是.NET2.0,这是遗留系统。我不想使用HttpWebRequest/Response类(事实上,我从它们切换到了web引用,这给了我一个限制,现在我无法拥有HTTP状态代码),也不想自己编写/生成XML。我问是否有可能通过SOAP扩展实现这一点,或者我应该编写类似于HTTP apporach的SOAP扩展?