捕获到ASP.NET ASMX Web服务的SOAP请求

前端之家收集整理的这篇文章主要介绍了捕获到ASP.NET ASMX Web服务的SOAP请求前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
考虑将传入SOAP请求记录到ASP.NET ASMX Web服务的要求。任务是捕获发送到Web服务的原始XML。

传入消息需要记录以进行调试检查。应用程序已经有自己的日志库在使用,所以理想的用法是这样的:

//string or XML,it doesn't matter.
string incomingSoapRequest = GetSoapRequest();

Logger.LogMessage(incomingSoapRequest);

>是否有任何简单的解决方案来捕获传入SOAP请求的原始XML?
>您将处理哪些事件以访问此对象和相关属性
>有没有反正IIS可以捕获传入的请求和推送到日志?

解决方法

捕获原始消息的一种方法是使用 SoapExtensions

SoapExtensions的一个替代方法是实现IHttpModule,并在输入流进入时抓取输入流。

public class LogModule : IHttpModule
{
    public void Init(HttpApplication context)
    {
        context.BeginRequest += this.OnBegin;
    }

    private void OnBegin(object sender,EventArgs e)
    {
        HttpApplication app = (HttpApplication)sender;
        HttpContext context = app.Context;

        byte[] buffer = new byte[context.Request.InputStream.Length];
        context.Request.InputStream.Read(buffer,buffer.Length);
        context.Request.InputStream.Position = 0;

        string soapMessage = Encoding.ASCII.GetString(buffer);

        // Do something with soapMessage
    }

    public void Dispose()
    {
        throw new NotImplementedException();
    }
}
原文链接:https://www.f2er.com/aspnet/254032.html

猜你在找的asp.Net相关文章