首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在ASP.NET MVC和IIS7中记录原始HTTP请求/响应

在ASP.NET MVC和IIS7中记录原始HTTP请求/响应
EN

Stack Overflow用户
提问于 2009-06-24 13:44:32
回答 15查看 102.4K关注 0票数 149

我正在编写一个web服务(使用HTTP ),出于支持的目的,我们希望能够以尽可能接近原始的在线格式(即,包括ASP.NET方法、路径、所有头和主体)的方式将请求和响应记录到数据库中。

我不确定的是如何以最少的“损坏”的方式获得这些数据。我可以通过检查HttpRequest对象的所有属性并根据它们构建一个字符串(对于响应也是如此)来重新构建我认为的请求的样子,但我真的希望获得在网络上发送的实际请求/响应数据。

我很乐意使用任何拦截机制,例如过滤器、模块等,并且解决方案可以针对IIS7。但是,我更喜欢将其仅保留在托管代码中。

有什么建议吗?

编辑:我注意到HttpRequest有一个SaveAs方法,可以将请求保存到磁盘,但它使用大量无法公开访问的内部助手方法从内部状态重建请求(这正是为什么不允许保存到用户提供的流的原因,我不知道)。因此,看起来我必须尽最大努力从对象重构请求/响应文本……叹息吧。

编辑2:请注意,我说的是整个请求,包括方法、路径、头部等。当前的响应仅查看不包含此信息的正文流。

编辑3:这里没人看问题吗?到目前为止,有五个答案,但没有一个甚至暗示有办法获得整个原始的在线请求。是的,我知道我可以从request对象中捕获输出流、头和URL以及所有这些东西。我已经在问题中说过了,请参阅:

我可以通过检查HttpRequest对象的所有属性并从它们构建一个字符串(对响应也是如此)来重新构造我认为的请求的样子,但我真的希望获得在网络上发送的实际请求/响应数据。

如果您知道完整的原始数据(包括报头、url、http方法等)只是无法检索,那么知道这一点将是有用的。同样,如果您知道如何以原始格式获取所有内容(是的,我的意思仍然是包括头文件、url、http方法等)。而不需要重建它,这就是我所问的,那么这将是非常有用的。但是告诉我我可以从HttpRequest/HttpResponse对象重构它是没有用的。我知道这个。我已经说过了。

请注意:在任何人开始说这是一个坏主意,或将限制可伸缩性等之前,我们还将在分布式环境中实现节流、顺序交付和防重放机制,因此无论如何都需要数据库日志。我不是在寻找关于这是否是一个好主意的讨论,我是在寻找如何才能做到这一点。

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1038466

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档