【发布时间】:2015-10-14 23:49:45
【问题描述】:
我正在尝试使用 Unity 通过属性对我的 ApiController 方法应用调用处理程序,但从未调用过调用处理程序。
属性:
public class LogAttribute : HandlerAttribute
{
private readonly int _order;
public LogAttribute(int order)
{
_order = order;
}
public override ICallHandler CreateHandler(Microsoft.Practices.Unity.IUnityContainer container)
{
return new LoggingCallHandler
{
Order = _order
};
}
}
调用处理程序:
public class LoggingCallHandler : ICallHandler
{
public IMethodReturn Invoke(IMethodInvocation input, GetNextHandlerDelegate getNext)
{
//.....stuff
}
}
注册:
container.AddNewExtension<Interception>();
container.RegisterType<IMyApiController>();
container.Configure<Interception>()
.SetInterceptorFor<IMyApiController>(new InterfaceInterceptor());
依赖解析器(使用 WebActiviatorEx):
public static class UnityWebApiActivator
{
public static void Start()
{
var resolver = new UnityDependencyResolver(UnityConfig.GetConfiguredContainer());
GlobalConfiguration.Configuration.DependencyResolver = resolver;
}
}
【问题讨论】:
-
你在哪里申请
LogAttribute? -
就在 ApiController 方法上...
标签: c# asp.net asp.net-web-api unity-container aop