C# Ninject拦截器调用两次beforeinvoke和afterinvoke方法

C# Ninject拦截器调用两次beforeinvoke和afterinvoke方法,c#,asp.net,ninject,ninject-extensions,ninject-interception,C#,Asp.net,Ninject,Ninject Extensions,Ninject Interception,我正在asp.net中开发一个应用程序,其中我正在实现Ninject拦截器,在该拦截器中我正在绑定/注册服务,如 kernel.Bind<IPracticeManagement>().To<PracticeManagementClient>().InRequestScope().Intercept().With<TimingInterceptor>(); BeforeInvoke方法在TimeInterceptor中调用了两次。为什么?也许您同时安装了Nin

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

kernel.Bind<IPracticeManagement>().To<PracticeManagementClient>().InRequestScope().Intercept().With<TimingInterceptor>();

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

也许您同时安装了
Ninject.Extensions.Interception.DynamicProxy
Ninject.Extensions.Interception.Linfu
?如果是这样,那么试着只使用其中一个。

您是否在
getspeciality
中设置了断点,它是调用一次还是两次?还有,你的
TIMINGINGINTERCEPTOR
实现是什么样子的?GetSpeciality正在调用一次。然后你应该在调用之前在中放置一个断点,并检查
invocation
可能它第二次请求
GetSpeciality
和一个不同的方法……我想知道调用的哪个属性具有相关信息。调用中有很多属性。对于start,您应该查看
invocation.Request.Method
,以获取当前拦截的方法。然后调用
invocation.Request.Context.Request.ParentRequest.Service
,以检查它是否与控制器同时运行。
public class HomeController : Controller
    {
        private readonly IPracticeManagement _practiceManagement;

        public HomeController(IPracticeManagement practiceManagement)
        {
            this._practiceManagement = practiceManagement;
        }

        public ActionResult Index()
        {

            var specialities = this._practiceManagement.GetSpecialty();

            this.ViewBag.Specialities = specialities;

            ViewBag.Message = "Modify this template to jump-start your ASP.NET MVC application.";

            return View();
        }
}