加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

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

发布时间:2020-12-15 18:52:02 所属栏目:asp.Net 来源:网络整理
导读:考虑将传入SOAP请求记录到ASP.NET ASMX Web服务的要求。任务是捕获发送到Web服务的原始XML。 传入消息需要记录以进行调试检查。应用程序已经有自己的日志库在使用,所以理想的用法是这样的: //string or XML,it doesn't matter.string incomingSoapRequest
考虑将传入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();
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读