Используя log4net, мы хотели бы регистрировать все вызовы наших методов действия контроллера ASP.NET MVC.
Журналы должны содержать информацию о любых параметрах, которые были переданы в контроллер.
Вместо того, чтобы вручную кодировать это в каждом методе действия, мы надеемся использовать подход AoP с перехватчиками через Unity .
У нас уже есть эта работа с некоторыми другими классами, которые используют интерфейсы (используя InterfaceInterceptor
). Однако мы не уверены, как действовать с нашими контроллерами. Должны ли мы немного переработать их, чтобы использовать интерфейс, или есть более простой подход?
Редактировать
VirtualMethodInterceptor представляется правильным подходом, однако использование этого приводит к следующему исключению:
System.ArgumentNullException: Value cannot be null.
Parameter name: str
at System.Reflection.Emit.DynamicILGenerator.Emit(OpCode opcode, String str)
at Microsoft.Practices.ObjectBuilder2.DynamicMethodConstructorStrategy.PreBuildUp(IBuilderContext context)
at Microsoft.Practices.ObjectBuilder2.StrategyChain.ExecuteBuildUp(IBuilderContext context)