问题标签 [unity-interception]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 我可以让 WebApi 与 IoC Aspects/Interceptor 一起使用吗
我来自 WCF 背景,我成功地将 IoC 与 Aspects/Interceptors 一起使用来抽象身份验证和日志记录等功能。我只需将所需的接口添加到方面构造函数,就像使用任何典型的 IoC 设置一样。
我现在正在尝试将相同类型的过程应用于 webapi,但是控制器从 ApiController 继承并且不实现接口。我假设可能有不同的应用方面的方式?
方面
容器注册:
我在这个例子中使用统一。谁能指出我正确的方向?
c# - Intercepting object with deep inheritance tree
I'm having object structure with depth of inheritance of 3. Object is implementing single particular interface. The depth of inheritance for interface is 4. My final object is being constructed via unity IoC. I need to intercept every public method in this object (means no matter in which of interfaces it is defined), though whatever interceptor type I use (InterfaceInterceptor/TransparentProxyInterceptor/VirtualMethodInterceptor ) it always intercepts only methods defined in the final class of inheritance tree. Please see the illustration of object structure below:
Object is registered into unity container as follows:
Unfortunately my interceptor always gets invoked only for ExecuteMyCommand()
method. Is it possible to do such interception I'm striving for via unity container? I'm slowly thinking of trying to achieve it via Spring.NET AOP library.
c# - InvocationContext 不持久化内容
我在InvocationContext
字典中添加了一个值,但它不会持续到下一次调用。即,被拦截的链中的每个调用都返回 false for InvocationContext.ContainsKey("tracing-id")
。
我可以向 中添加一个条目InvocationContext
,但是,当getNext()(input, getNext)
被调用并且下一个调用被拦截时,它InvocationContext
是空的。
我是否误解了如何InvocationContext
使用?如果是这样,从一个方法调用到下一个方法调用将诸如 ID 之类的东西持久化的正确方法是什么?
c# - Unity(3.5) 拦截在 MVC 中不起作用
我正在尝试合并Interception
使用PolicyInjectionBehavior
并得到这个错误:
异常信息:异常类型:ResolutionFailedException 异常消息:依赖解析失败,类型=“CSR.Presentation.Controllers.HomeController”,名称=“(无)”。发生异常时:调用构造函数 Microsoft.Practices.Unity.InterceptionExtension.PolicyInjectionBehavior(Microsoft.Practices.Unity.InterceptionExtension.CurrentInterceptionRequest interceptionRequest,Microsoft.Practices.Unity.InterceptionExtension.InjectionPolicy[] 策略,Microsoft.Practices.Unity.IUnityContainer 容器)。例外是:ArgumentException - 传递的类型必须是接口。
如果我在注册中排除Interception
代码,它工作正常。循环遍历 中的容器Output Window
,看起来所有的注册都在那里。此外,如果我手动注册并包含Interception
代码,它也可以工作。我有很多接口,不想单独注册。这就是我正在做的事情 - 按以下顺序:
c# - MVC 5 中的 Unity(3.5) 拦截
我正在尝试Interception
在MVC
应用程序中使用。我遇到的问题是控制器。因为控制器在Unity
容器中注册,并且没有接口,所以我收到错误消息。我想我需要一种方法将控制器从Interception
流程中排除,或者我可以做其他事情吗?这是可能的还是可行的?我问了一个关于 SO 的类似问题,根据我收到的评论,我觉得最好再提出一个问题。
这是错误:
异常信息:异常类型:ResolutionFailedException 异常消息:依赖解析失败,类型=“CSR.Presentation.Controllers.HomeController”,名称=“(无)”。发生异常时:调用构造函数 Microsoft.Practices.Unity.InterceptionExtension.PolicyInjectionBehavior(Microsoft.Practices.Unity.InterceptionExtension.CurrentInterceptionRequest interceptionRequest,Microsoft.Practices.Unity.InterceptionExtension.InjectionPolicy[] 策略,Microsoft.Practices.Unity.IUnityContainer 容器)。例外是:ArgumentException - 传递的类型必须是接口。
这是代码;
c# - 跨多个层的 Unity 接口拦截
对此的任何建议将不胜感激。
我有一个实现 Unity DI 的标准 NTier 应用程序。这工作得很好,统一容器被创建并注册了 BAL 中的所有内容。我还使用上述方法的属性装饰配置了接口拦截。我正在尝试测量某些方法的时间。接口拦截在 BAL 层中工作得非常好,但是当我尝试在 BAL 引用的名为 DistributionProviders 的层上使用相同的方法时,它永远不会命中调用处理程序。
我用来配置接口拦截的代码是:
属性是类是:
ProcessLoggingHandler 是:
示例接口方法装饰:
谁能向我解释我做错了什么。我唯一能想到的是容器没有被传递到 HandlerAttribute 的 CreateHandler() 方法中。
--附加代码 - 这就是我注册 Unity 容器的方式。它实际上是单例中的一个属性。我只是解析顶级控件类,然后自动解析它下面的其他类。
asp.net-mvc-4 - 自定义 Unity 拦截行为或企业库块,哪个更适合 AOP?
试图决定为我的 MVC 应用程序采用哪条路径并希望遵循 AOP 方法。谁能解释 Unity Custom 拦截行为和使用 Enterprise Library 6 的优缺点。
现实世界实施的经验和教训将非常有帮助,谢谢。
unity-container - 按约定注册和拦截导致ResolutionFailedException
简单场景
如果我手动注册接口,解析 MyController 工作正常:
如果我尝试使用自动注册:
解析失败并出现 ResolutionFailedException,因为传递的类型必须是接口。当然,如果我把它做成一个接口,它就可以工作,但前提是它被命名为Controller。如果我将其称为 MyController 或 SqlController 或其他名称,则映射将失败,因为它无法解析接口。
我希望只做一个程序集扫描,类似于 Spring 框架所做的,但我无法弄清楚。
我错过了什么?或者这在 Unity 中是不可能的?
c# - Unity IoC Invalid Operation 当更改然后 RegisterType 中的生命周期管理器时
我在我的 MVC 4 项目中使用 Unity 为我的 IoC 进行了此配置。
当我更改或其他内容TransientLifetimeManager
时PerRequestLifetimeManager
,会发生以下异常:
(第 101 行错误)
.net - 使用 Unity 拦截实例?全局拦截特定类型
我正在寻找一种方法,一旦使用了特定类的属性,就总是拦截它的实例。
例如,如果 MyTestClass 将被拦截..这将触发拦截:
然后会拦截方法“get_SomeProperty”.. 但是我看到的所有使用 Unity 的示例都要求我通过 container.Resolve(); 来“管道”创建 MyTestClass 的实例;.. 我想避免这种情况。 . 有可能吗?.. 我很确定我以前曾经使用 Castle.DynamicProxy 做过类似的事情.. 但我当前的应用程序恰好安装了 Unity,所以重新使用 Unity 似乎是个好主意可能的。
不使用 container.Resolve() 的另一个原因是我的这个实例也可以在 MVC 操作中创建,它没有对容器的逻辑引用。我不认为将 MyTestClass 作为参数注入构造函数将是一个非常好的主意..
溴,英克斯