繁体   English   中英

在MVC4中访问原始http请求

[英]Accessing the raw http request in MVC4

关于在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
    }
}

哦,如果你开始这样做,我希望你已经计划了在服务器上购买额外存储所需的预算。 如果您开始在每个请求上记录整个原始请求,那么您将需要存储。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM