在MVC应用程序中记录事件(请求和响应)

时间:2017-12-08 15:35:52

标签: c# model-view-controller

好的,所以我在这里有很多任务:

这个项目的背景非常复杂,并且完全由NDA覆盖,所以我只是陈述我在没有背景的情况下要做的事情。

所以我需要的是一种记录对MVC应用程序发出的每个请求以及来自它的每个响应的方法。

此外,我还需要一种回复"的方法。请求与发送时完全相同。

我希望我可以创建一些解决方案来加载" MVC应用程序,Self托管或在IIS中运行,获取请求,记录它们并将它们逐字传递给MVC应用程序,然后MVC应用程序就像任何其他MVC应用程序一样。

然后我可以创建第二个解决方案,即#34;加载" MVC应用程序,但不是打开它来请求它将从事件存储读取事件和"重播"他们在MVC应用程序中。

现在我不知道哪里可以开始。这种事情是方式在我的舒适区之外。

如果我有另外的解决方案可以记录和重播请求(和回复),请告诉我。

即使在开始执行所有身份验证和路由malarkey之前有一种方法可以拦截MVC中的请求,那么这将是一个很好的起点。我还需要知道在发送响应之前的最后一秒我可以捕获响应。

非常感谢你的时间 安迪

1 个答案:

答案 0 :(得分:0)

HttpModule适用于您的方案:

using System;
using System.Web;
public class HelloWorldModule : IHttpModule
{
   public HelloWorldModule()
   {
   }

   public String ModuleName
   {
       get { return "HelloWorldModule"; }
   }

   // In the Init function, register for HttpApplication 
   // events by adding your handlers.
   public void Init(HttpApplication application)
   {
      application.BeginRequest += 
          (new EventHandler(this.Application_BeginRequest));
      application.EndRequest += 
          (new EventHandler(this.Application_EndRequest));
   }
   private void Application_BeginRequest(Object source, 
        EventArgs e)
   {
      // Create HttpApplication and HttpContext objects to access
      // request and response properties.
      HttpApplication application = (HttpApplication)source;
      HttpContext context = application.Context;  
      /*...*/      
   }

   private void Application_EndRequest(Object source, EventArgs e)
   {
      HttpApplication application = (HttpApplication)source;
      HttpContext context = application.Context;
      /*...*/
   }

   public void Dispose() { }
}

代码和更多可用信息here

相关问题