问题标签 [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.

0 投票
0 回答
1099 浏览

c# - Ninject Interception 3.0 接口代理方法属性

我刚刚将一个相对较大的代码库从 Ninject 2.2 升级到了 Ninject 3.0。一切似乎都按计划进行,除了我必须对我们使用的拦截内容进行一些更改。

这个精简版是我们过去在 Ninject 2.3 中发挥出色效果的版本。因为不允许使用接口代理,所以我们将所有方法都标记为虚拟,这使得 Castle 动态代理能够覆盖它们。

现在我想将 [LogMethod] 移动到接口级别以使用接口代理:

但是,当我移动它时,Ninject 不再检测到我要拦截这个类。此外,如果我保持原样,则会出现一个更微妙的问题:

invocation.Request.Method是来自接口的 MethodInfo IFoo- 不是实现Foo,这意味着我无法再检索我的属性。所以我暂时陷入了这两个问题之间——如果我把属性放在接口中,Ninject 不会创建代理,如果我把属性放在实现中,我不能轻易地检索我的属性来访问它的属性。目前我唯一的解决方案是:

或者使用 InterfaceMapping 将我的 IFoo 转换MethodInfoinvocation.Request.Target.GetType()(返回实现类型 - FooMethodInfo

有什么建议吗?

0 投票
1 回答
2466 浏览

c# - 使 Ninject 拦截器与异步方法一起工作

我开始使用 ninject 拦截器来包装我的一些具有各种行为的异步代码,并且在让一切正常工作时遇到了一些麻烦。

这是我正在使用的拦截器:

在大多数正常情况下,这似乎运行正常。我不确定这是否会达到我的预期。尽管它似乎将控制流异步返回给调用者,但我仍然有点担心代理无意中阻塞线程或其他东西的可能性。

除此之外,我无法让异常处理正常工作。对于这个测试用例:

我可以在拦截器中看到 catch 块被击中,但我的测试中的 catch 块从未被重新抛出。我更困惑,因为这里没有代理或任何东西,只有非常简单的模拟和对象。我也在Task.Run(() => interceptor.Intercept(invocation.Object)).Wait();我的测试中尝试过类似的东西,但仍然没有改变。测试顺利通过,但 nUnit 输出确实有异常消息。

我想我把事情搞砸了,而且我并不像我想的那样完全理解发生了什么。有没有更好的方法来拦截异步方法?我在异常处理方面做错了什么?

0 投票
1 回答
503 浏览

wcf - 拦截不适用于 WCF 和 Ninject 3.0

我对 Ninject 3.0 和拦截 WCF 方法有疑问。

我正在使用任务服务

我的配置是:

ServiceInterceptor 实现 IInterceptor,

当我将 UnitTest 用于内核时,ninject 将 DynamicProxy 对象用于 ITaskService 实现操作,但它在 WCF 中不起作用。

我不知道为什么 NinjectServiceHostFactory 不使用 DynamicProxy 和 Interception 来返回 ITaskService 的实现。

0 投票
0 回答
580 浏览

asp.net-mvc - 如何连接 Ninject 拦截模块?

我通过 NuGet 安装了 Ninject、Ninject.Extensions.Interception 和 Ninject.Extensions.Interception.DynamicProxy,并且我有以下模块

TimingInterceptor 在哪里

现在,当我尝试将模块与 ninject 内核连接并运行我的站点时

我收到以下错误,

基本上,每当调用操作方法时,我都会尝试为我的 ASP.NET MVC 应用程序进行日志记录,我想记录某些事情。但不知道如何解决这个错误。有经验的人可以指出我做错了什么吗?谢谢。

0 投票
2 回答
20293 浏览

asp.net-mvc - 如何使用 Ninject 拦截来拦截所有 ASP.NET WebApi 控制器操作方法调用以进行日志记录?

每次调用我们的 ASP.NET WebApi 控制器的一种操作方法时,我们公司都需要记录某些事情。由于我们现在将 Ninject 用于 DI,因此我们也希望将它用于此目的。这是我到目前为止所尝试的。

我通过 NuGet 安装了 Ninject、Ninject.Extensions.Interception 和 Ninject.Extensions.Interception.DynamicProxy,并且我有以下模块

TimingInterceptor 在哪里

现在,当我尝试将模块与 ninject 内核连接并运行我的站点时

但是,每当有一个调用进入其中一个操作方法时,它都会抛出一个错误说

有经验的人可以指出我做错了什么吗?谢谢。

0 投票
1 回答
351 浏览

c# - Ninject Interceptor 调用两次 beforeinvoke 和 afterinvoke 方法

我正在 asp.net 中开发一个应用程序,在该应用程序中我正在实现 Ninject 拦截器,我在其中绑定/注册服务,例如

当我调用此服务的方法时

方法 BeforeInvoke 在 TimeInterceptor 中调用了两次。为什么?

0 投票
1 回答
1214 浏览

ninject - Ninject 约定和拦截

我想用拦截属性装饰我的服务,然后让基于约定的绑定为我设置拦截器。我不希望我的属性从拦截属性继承......如果我可以避免的话。

例如,我有以下课程:

我知道我可以按如下方式绑定它:

如何使用属性和拦截器的不同组合来做到这一点?例如:

如果我有 Log 和 Authorize 属性,我必须配置 3 组绑定?(1 为无授权日志,1 为无日志授权,1 为日志和授权)。

更新:虽然我无法根据我原来的问题参数找到解决方案,但我确实偶然发现了一个类似的问题,这导致我最终得到了解决方案。这是源代码:

注意: Common.Interception.Interceptors命名空间位于一个程序集中,该程序集引用了 Ninject.Extensions.Interception(及其所有必需的依赖项)。我的属性是在一个单独的程序集中定义的,没有它们自己的依赖项。

MiscExtensions.cs

AlternateInterceptorRegistrationStrategy.cs

IInterceptorConfig.cs

拦截器配置文件

TraceInterceptor.cs - 只是一个示例拦截器

注意:这是一个简单的控制台应用程序,展示了如何连接属性/拦截器。这依赖于 Ninject.Extensions.Interception.DynamicProxy 和 Ninject.Extensions.Conventions (以及它们所有必需的依赖项)

0 投票
1 回答
2910 浏览

c# - how to use Ninject intercept using InterceptAttribute

I have a NinjectWebCommon as follow. I am unable to get the TimingInterceptor to trigger on the method that has "Timing" attribute set. It works fine if the intercetor is defined at the class level where all method call is going to be intercepted, but I would like to have the ability to specify the method I want to intercept (opt in).

I do have the Ninject.Extensions.Interception.DynamicProxy added.

my Service class define as follow

Interceptor and attribute define as follows

0 投票
1 回答
1228 浏览

c# - 使 Ninject Interceptor 的 Intercept 方法成为异步方法

我正在使用 Ninject Interceptor 以便在调用实际方法之前和之后执行一些任务,但我需要这些操作是异步的。我看了一下下面的文章making-ninject-interceptors-work-with-async-methods并实现了异步部分,但现在我错过了最后一篇,那就是等待/非阻塞等待任务完成在拦截方法中。

  • 我不能使用等待,因为我希望这是异步非阻塞操作

    /li>
  • 我什至尝试将异步放在此方法上,但我仍然遇到问题,可能是因为这是一个无效方法

    /li>

有没有办法让这个真正的异步方法?

0 投票
1 回答
153 浏览

c# - Ninject Interceptor 自定义 PlanningStrategy 在 Ninject 3 中不起作用

我一直在使用 Ninject 2 并更新到 Ninject 3 以更好地支持 SignalR 和其他框架。

下面的代码过去可以正常工作。

但是现在它爆炸说它在 ninject 绑定中找不到 IAdviceFactory,因此最新版本的拦截器中是否有任何重大更改,因为几乎没有关于此扩展的文档(考虑到数量我觉得很奇怪AoP 这些天在四处飘荡)。

那么有人能指出我某个地方的方向,它会告诉我问题是什么吗?