Ninject Interceptor дважды вызывает методы beforeinvoke и afterinvoke

Я разрабатываю приложение в asp.net, в котором я реализую перехватчик Ninject, в котором я привязываю/регистрирую службу, например

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

Когда я вызываю метод этой службы

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();
        }
}

Метод BeforeInvoke вызывается дважды в TimeInterceptor. Почему?


person Billz    schedule 21.01.2013    source источник
comment
Вы поставили точку останова в GetSpecialty, она вызывается один или два раза? И как выглядит ваша реализация TimingInterceptor?   -  person nemesv    schedule 21.01.2013
comment
GetSpecialty звонит один раз.   -  person Billz    schedule 21.01.2013
comment
Затем вы должны поставить точку останова в BeforeIncoke и проверить invocation, возможно, он запрашивает GetSpecialty и другой метод во второй раз...   -  person nemesv    schedule 21.01.2013
comment
Я хочу знать, какой атрибут вызова имеет соответствующую информацию. В вызове есть много атрибутов.   -  person Billz    schedule 21.01.2013
comment
Для начала вы должны посмотреть на invocation.Request.Method, чтобы узнать, какой метод перехватывается в данный момент. Затем invocation.Request.Context.Request.ParentRequest.Service проверить, работает ли он оба раза с вашим контроллером.   -  person nemesv    schedule 21.01.2013
comment
Оба раза invocation.Request.Method и invocation.Request.Context.Request.ParentRequest.Service одинаковы. :(   -  person Billz    schedule 21.01.2013
comment
Привет, ты нашел решение этой проблемы? Я тоже сталкиваюсь.   -  person Jochen van Wylick    schedule 12.08.2013


Ответы (1)


Может быть, у вас установлены оба Ninject.Extensions.Interception.DynamicProxy и Ninject.Extensions.Interception.Linfu? Если это так, то попробуйте использовать только один из них.

person Adiono    schedule 24.11.2015