gpt4 book ai didi

c# - 如何在 c# 中查看对服务引用的传入响应的完整 SOAP 响应(包括 header )?

转载 作者:太空狗 更新时间:2023-10-29 21:25:38 25 4
gpt4 key购买 nike

我有一个连接到服务引用的简单 c# 3.5 .Net 控制台应用程序。一切正常 - 调用电话和接收回复,但现在我被告知要查看返回的消息中的 Soap header 。

我找到了 .Net WebService Studio,它非常棒,可以显示 Soap 请求和 Soap 响应。

对于响应,它显示如下内容:

ResponseCode: 200 (OK)
Content-Language:en-US
Content-Length:30048
Content-Type:text/xml; charset=utf-8
Date:Mon, 25 Jan 2010 19:57:47 GMT
Server:WebSphere Application Server/6.1

<?xml version="1.0" encoding="utf-16"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Header />
<soapenv:Body>

如何在我的应用程序中生成类似的东西?

我感兴趣的响应是一个不同的方法,它返回一个足够大的消息来炸毁 WebService Studio。我看不到如何使用此工具设置邮件大小参数。所以,我只想自己捕获这些信息。

关于如何做到这一点有什么想法吗?

最佳答案

WCF 通过 config file 进行跟踪,或者您可以实现一种行为来自己记录消息。

添加这样的行为:

Service1SoapClient client = new Service1SoapClient();
client.Endpoint.Behaviors.Add( new MessageInspectionBehavior());
client.HelloWorld();

和代码:

class MessageInspectionBehavior : IClientMessageInspector, IEndpointBehavior
{
public void Validate(ServiceEndpoint endpoint)
{
}

public void AddBindingParameters(ServiceEndpoint endpoint, BindingParameterCollection bindingParameters)
{
}

public void ApplyDispatchBehavior(ServiceEndpoint endpoint, EndpointDispatcher endpointDispatcher)
{
}

public void ApplyClientBehavior(ServiceEndpoint endpoint, ClientRuntime clientRuntime)
{
clientRuntime.MessageInspectors.Add(this);
}

public object BeforeSendRequest(ref Message request, IClientChannel channel)
{
//Write request message
Console.WriteLine(request.ToString());
return null;
}

public void AfterReceiveReply(ref Message reply, object correlationState)
{
// Write out http headers
foreach (var property in reply.Properties)
{
if (!(property.Value is HttpResponseMessageProperty)) continue;
var httpProperties = (HttpResponseMessageProperty)property.Value;
foreach (KeyValuePair<object, object> kvp in httpProperties.Headers)
{
Console.WriteLine(kvp.Key + ":" + kvp.Value);
}
}
// Write result message
Console.WriteLine(reply.ToString());
}
}

同样,您可以使用 IDispatchMessageInspector 和 IServiceBehavior 在服务端编写记录器。

关于c# - 如何在 c# 中查看对服务引用的传入响应的完整 SOAP 响应(包括 header )?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2135371/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com