C# Ninject拦截器调用两次beforeinvoke和afterinvoke方法
我正在asp.net中开发一个应用程序,其中我正在实现Ninject拦截器,在该拦截器中我正在绑定/注册服务,如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
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();
}
}