考虑将传入SOAP请求记录到ASP的要求.NET ASMX web服务.任务是捕获发送到web服务的原始XML.

需要记录传入消息以进行调试判断.该应用程序已经在使用其自己的日志(log)库,因此理想的用法如下所示:

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

Logger.LogMessage(incomingSoapRequest);
  • 有什么简单的解决方案可以捕获传入SOAP请求的原始XML吗?
  • 要访问此对象和相关属性,您将处理哪些事件?
  • IIS是否可以捕获传入请求并将其推送到日志(log)?

推荐答案

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

SoapExtensions的另一种 Select 是实现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, 0, buffer.Length);
        context.Request.InputStream.Position = 0;

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

        // Do something with soapMessage
    }

    public void Dispose()
    {
        throw new NotImplementedException();
    }
}

Asp.net相关问答推荐

将 Response.Headers.Add 替换为方法属性decorator

带有模型的 mvc 上传文件 - 第二个参数发布的文件为空

判断 asp.net mvc 4 应用程序中的 ssl 协议、密码和其他属性

在 Sessions 中存储自定义对象

如何使用 jQuery 设置 outerHTML

多个 DataContext 类是否合适?

iOS 8 / Safari 8 不适用于 ASP.NET AJAX 扩展

问题映射 HttpHandler --> HTTP Error 404 Not Found

如何在 ASP.Net 网络表单中使用标签?

DropDownList AppendDataBoundItems(第一项为空白且无重复项)

ASP.NET IIS Web.config [内部服务器错误]

如何在 ASP.NET 站点中添加 favicon.ico

单击按钮时播放哔声

如何在 ASP.NET MVC 中启用跨源请求

*.csproj 中的 usevshostingprocess 是什么?

如何验证 WebClient 请求?

如何将参数传递给 ASP.NET MVC 2 中的自定义 ActionFilter?

对于 DB ID,需要一个较小的 GUID 替代方案,但对于 URL 仍然是唯一且随机的

将Bundle 包添加到现有的 ASP.NET Webforms 解决方案

DateTime.Parse 和 Convert.ToDateTime 之间有什么区别?