如何在ApiController构造之后但在执行动作之前运行方法?

时间:2014-01-24 23:24:41

标签: asp.net-mvc asp.net-web-api

我有一个ASP.NET Web API服务,我试图将有关请求的信息注入“日志记录上下文”,这些对象可以被不知道它们是Web服务的一部分的对象重用。目标是记录的每条消息都与从产生它的请求中获取的一组数据点相关联。

上下文本身很早就由Message Handler生成,然后添加到Request.Properties。我遇到的问题是,在控制器构造函数中,控制器上的Request属性尚未设置,因此我无法检索上下文并使用它来适当地配置日志记录。

我想我可以使用过滤器:在OnActionExecuting中,过滤器可以检查控制器是否实现了定义“PreAction”的接口,如果是,它可以调用该方法,但我不确定是否是复制框架提供的功能。

问题:在运行构造函数并且已填充Request属性但在执行操作方法之前,是否有内置的方法来运行方法?

1 个答案:

答案 0 :(得分:1)

作为选项,您可以使用Microsoft Unity IoC容器并使用拦截功能。 http://msdn.microsoft.com/en-us/library/ff647107.aspx

  1. http://msdn.microsoft.com/en-us/library/ff647107.aspx
  2. http://msdn.microsoft.com/en-us/magazine/gg535676.aspx
  3. 你可以用它拦截任何方法。