我正在尝试为所有控制器添加一个拦截器。我正在使用Simple Injector和asp.net MVC。
在尝试以下示例时:https://simpleinjector.readthedocs.io/en/latest/InterceptionExtensions.html当我想将拦截器添加到接口时一切正常。问题始于Controllers,因为它们是具体类型而不是接口...
private static void ThrowIfServiceTypeNotInterface(ExpressionBuiltEventArgs e) {
// NOTE: We can only handle interfaces, because
// System.Runtime.Remoting.Proxies.RealProxy only supports interfaces.
if (!e.RegisteredServiceType.IsInterface) {
throw new NotSupportedException("Can't intercept type " +
e.RegisteredServiceType.Name + " because it is not an interface.");
}
}
在上面的实现中,仅对接口有明确的限制,我想了解为什么?
有人在向控制器/具体类型的SimpleInjector添加拦截器方面有经验吗?
答案 0 :(得分:1)
在上面的实现中,仅对接口有明确的限制,我想了解为什么?
好吧,评论已经回答了这个问题:
// NOTE: We can only handle interfaces, because
// System.Runtime.Remoting.Proxies.RealProxy only supports interfaces.
要能够应用拦截,您将必须确保通过IController
接口来解析控制器。您将在以下q / a中找到如何实现此目标的方法:How to decorate an ASP.NET MVC controller with Simple Injector。