问题标签 [ninject-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.
wcf - 无法让 Ninject 拦截与 WCF 一起使用
我们正在从 UNITY 切换到 Ninject 作为 WCF 服务的默认服务定位器。有一个漂亮的 NuGet 包可用于执行此操作,并且可以轻而易举地获得标准分辨率。
但是 - 我想拦截对我的 WCF 服务的调用。这是我所拥有的:
我的 .svc 文件:
这是我的服务:
内核是这样构建的:
如果我像这样设置内核,则注入管理器实例,但不会发生拦截。我的拦截器在执行之前和之后记录一些东西,从来没有被调用过。
其他 Stackoverflow 线程建议使用:
如果我这样做,经理就不会被注入。如果我继续创建一个接受管理器的构造函数,它可以工作,但同样:没有拦截。
我在这里做错了什么?
c# - Ninject 拦截属性与传递给拦截器的参数?
我目前(非常简单地)使用以下代码进行拦截:
(见底部的问题)
我的拦截器:
我的属性:
应用于方法:
这行得通,我可以像这样通过属性传递其他参数:
如果您在我的属性中注意到我正在从属性中获取一些参数,我可以在属性类中访问这些参数,但是我无法将这些参数传递给拦截器。我尝试在 Kernel.Get<>() 调用中使用 ConstructorArgument,它不会引发错误,但 AuthorizationInterceptor 构造函数没有从 ninject 获取任何值。正如您在代码示例中看到的那样,我也尝试过 GetCustomAttributes() ,但这也没有返回任何内容。通过查看其他类似的帖子(Ninject Interception 3.0 Interface proxy by method attributes),这似乎是正确的方法,但它不起作用。有任何想法吗?
c# - AOP Ninject 停止被调用的拦截方法
我正在使用 Ninject 和 AOP 进行一些缓存。我有一个属性,我可以将其应用于存储库中的任何方法,并且在 BeforeInvoke 上,如果有一个缓存对象,它将返回我的缓存对象,并且 AfterInvoke 创建一个缓存对象。这一切都很好,但我不知道如何停止调用初始方法,即如果有一个缓存的对象,则返回它而不是调用一个被拦截的方法。我的拦截器在这里:
即使在 else 语句中,我显然不是说调用被调用的方法'invocation.Proceed();' 它仍然调用它。我如何告诉 ninject 只返回 invocation.ReturnValue ?
c# - 为什么 Ninject Bind with Interception 返回接口代理?
我试图了解Ninject.Extensions.Interception
3.0.0.8 如何为我的课程构建动态代理。我发现,当我使用继承自的属性装饰具体类时,InterceptAttribute
或者当我在绑定时使用方法直接拦截时,Intercept()
Ninject 返回装饰类的动态代理,而不是普通类型。
我有一个IPolicySearchPresenter
接口,我将其绑定到FlexPolicySearchPresenter
添加异常记录器拦截器的具体类型:
问题是当我检查该绑定的返回类型时:
我得到一个实例Castle.Proxies.IPolicySearchPresenterProxy
而不是FlexPolicySearchPresenterProxy
这给我的 FluorineFx 远程处理应用程序带来了问题。但是,如果我手动创建我的 Castle 代理:
返回的类型Castle.Proxies.FlexPolicySearchPresenterProxy
与我的远程实现完美配合。
问题是,我怎样才能让 Ninject.Interception 返回我的实例FlexPolicySearchPresenterProxy
而不是IPolicySearchPresenterProxy
. 请注意,通过手动 Castle 方式,我以不同的方式绑定:
而不是ninject方式:
我是否需要更改在 Ninject 中进行绑定的方式以获得正确的类型?
.net - 为什么 Ninject.Extensions.Interception 要求成员是虚拟的?
为什么Ninject.Extensions.Interception要求所有方法和属性都是虚拟的?
我猜它overrides
的成员提供了AOP
功能,但是这不能通过在方法拦截之前和之后调用方法来实现吗?即使在替换的情况下,原始方法也可以被包装以执行其他操作或不执行任何操作。
其他容器是否需要成员virtual
?哪些做,哪些不做。如果有没有?它们是如何工作的?
ninject - 存在多个绑定时选择了错误的拦截器
我有多个接口实现,我想为每个接口应用不同的拦截器,例如:
拦截器示例:
捆绑:
我希望 Foo1 乘以 10,而 Foo2 乘以 100。但两者都乘以 10,即:
这是一个错误还是我做错了什么?
c# - 通过城堡动态代理具有非空构造函数的 Ninject 拦截代理类
我目前的大部分实施都基于此处提供的信息:
我使用自定义计划策略类,它查找具有给定属性(不是 ninject 拦截器属性)的所有方法,如果它符合条件,则将被代理。
一个使用示例是:
Kernel.Components.Add<IPlanningStrategy, CustomPlanningStrategy<LoggingAttribute, LoggerInterceptor>>();
然后,这将查找任何具有[Logging]
属性的方法,然后使用日志拦截器。
但是,当我尝试代理具有相关属性的方法时,我目前正在从动态代理获取 InvalidProxyConstructorArgumentsException。现在我记得读到你需要虚拟方法,但是我不记得看到你必须有一个无参数的构造函数。
所有绑定都是针对接口完成的,AOP 拦截器通过属性和上面链接中提到的自定义代理计划类发生。
那么有没有办法让动态代理(或 linfu 版本)来代理具有依赖关系的构造函数的类?(所有依赖项都在内核中,因此不像它们无法解决)。
ninject - Ninject 检索拦截器内参数的自定义属性
我试图枚举修饰方法的参数以检索应用于这些参数的自定义属性以确定特定值。
我的拦截器中有以下内容,它显示了我尝试使用的两种不同方法,都检索和枚举 GetParameters,但一种使用 IsDefined,另一种使用 GetCustomAttributes:
我要找的属性很简单,没有实现:
和拦截属性:
而我拦截的方法:
如您所见,我用 EmulatedUser 属性修饰了 userId,并用我的拦截器属性修饰了方法。除了我看不到 userId 上的属性外,其他一切都很好。
有什么想法为什么我在该方法上看不到自定义属性?我猜这与方法不是实际的“调用目标”有关,但我看不出有什么办法可以解决这个问题。请帮忙!
c# - 尝试从 IInterceptor 中的 Ninject 解析项目失败
我正在尝试在我当前的项目中使用 Ninject,到目前为止,我一直很喜欢它。我正在尝试配置一个 IInterceptor 对象来拦截和处理对我的服务层的失败方法调用。这托管在 ASP.NET MVC 5 应用程序中。
在 中IInterceptor
,我尝试了几件事,例如:
使用构造函数注入设置私有变量,但发现 Ninject 似乎会
IInterceptor
无限期地重用一个方法的实例,而我还没有找到阻止这种情况的方法。由于我纳入范围的DbContext
其中一件事是在其他地方处置的,它最终会在任何未来的请求上失败,而不是在创建它的请求上。我发现
IInvocation
有一个Request.Kernel
属性。但是,当我尝试从容器中解析我的 UOW 时.InRequestScope()
,它失败了,因为它尝试解析IUowService
依赖项(其中一个依赖项取决于此时为空的 HttpContext),但似乎正在这样做在请求范围之外。它忽略了它需要的依赖项已经在 ASP.NET 请求中创建的事实,并试图创建新的依赖项。为拦截器设置绑定
this.Bind<NinjectExceptionHandler>().ToSelf().InTransientScope()
,但这似乎并没有停止拦截器的缓存。
我想我缺少一些东西。我理解想要缓存IInterceptor
对象以提高性能,但我发现我无法轻松使用 IOC 容器或注入来获取我的请求所需的对象,这很令人讨厌。
这是我在需要时启动和运行拦截的最后一个问题,因此非常感谢任何帮助!
asp.net-mvc-4 - 如何在注入和模块绑定(nInjectModule)到单独的程序集中时设置ninject
以下是项目结构:
- MVC 4 应用程序 1) 项目适用于具有控制器注入接口的 MVC。2)接口存在于这个应用程序中。
- 经理图书馆项目。1) 项目包含 MVC 应用程序的引用。2) 将每个接口实现到这个程序集中。3) NinjectMOdule 存在于该项目中,其中与相关管理器类绑定接口。
问题:无法将注入的类注入 Web 应用程序。
它给出以下错误:
Error No matching bindings are available, and the type is not self-bindable.
Activation path:
2) Injection of dependency ILeadInformation into parameter leadInformation of constructor of type HomeController
1) Request for HomeController