stackoverflow 上已经有很多关于访问 HttpRequest 的问题,但我还没有找到可以使用的问题。如果有人能指出我的答案,我将不胜感激。
我的问题是,我想以最简单的方式修改现有应用程序,以便添加完整的请求日志记录。我知道这可以通过 Http 模块和 IIS 日志记录或使用 Log4net 等来完成。但我不想使用任何这些技术,因为应用程序是不可预测的,所以我需要一个不需要任何配置更改的解决方案根本不。
我已将 OnActionExecuted 添加到基本控制器。
protected override void OnActionExecuted(ActionExecutedContext filterContext)
{
// todo: log request from filter context ....
base.OnActionExecuted(filterContext);
}
在上面的“todo”部分中,我希望读取原始 http 请求并将其保存到数据库文件中。记录到数据库非常简单,但是将 http 请求序列化或以其他方式转换为字符串的最佳方法是什么?
谢谢
protected override void OnActionExecuted(ActionExecutedContext filterContext)
{
var request = filterContext.HttpContext.Request;
var inputStream = request.InputStream;
inputStream.Position = 0;
using (var reader = new StreamReader(inputStream))
{
string headers = request.Headers.ToString();
string body = reader.ReadToEnd();
string rawRequest = string.Format(
"{0}{1}{1}{2}", headers, Environment.NewLine, body
);
// TODO: Log the rawRequest to your database
}
}
哦,如果您开始这样做,我希望您已经计划好了在服务器上购买额外存储所需的预算。因为如果您开始记录每个请求的整个原始请求,您将需要存储。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)