对于一组特定的动作,我需要记录传入的请求InputStream以及传出的Response.OutputStream。如何在我的ASP.NET MVC3应用程序中为特定操作记录Request.InputStream和Response.OutputStream流量?
我设想使用ActionFilterAttribute来覆盖OnActionExecuted和OnResultExecuted方法。
所以我开始这个想法...
public class ActionLoggerAttribute : ActionFilterAttribute
{
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
base.OnActionExecuted(filterContext);
HttpRequestBase request = filterContext.HttpContext.Request;
// TODO: Log the Request.InputStream
}
public override void OnResultExecuted(ResultExecutedContext filterContext)
{
base.OnResultExecuted(filterContext);
HttpResponseBase response = filterContext.HttpContext.Response;
// TODO: Log the Response.OutputStream
}
}
理想的情况下我就与企业库记录,因为我已经在使用它的错误日志记录挂钩这件事。
- 我在适当的时间访问输入和输出流吗?
- 我可以使用企业库轻松记录流?
- 对我的问题有没有完全不同的更好的解决方案?
谢谢!
所以,我已经发现,使用OnActionExecuting比OnActionExecuted效果更好。 Request.Input流首先是空的。但是,我仍然在努力记录Response.OutputStream。它似乎是只写,我需要阅读它! – Justin 2011-03-24 22:38:52