ВСЕ конструкторы моих встроенных контроллеров получают по 4 раза за каждый запрос - PullRequest
2 голосов
/ 08 августа 2010

Я использую MVCTurbine в своем приложении, которое автоматически внедряет мои контроллеры в мой сайт asp.net-mvc 2.0. Мои главные страницы, страницы просмотра, файлы css, web.configs и javascript находятся в моем проекте MVC, все остальные (включая global.asax) находятся в отдельных библиотеках.

Когда я ставлю точку останова на конструкторы моего контроллера, я замечаю, что ВСЕ конструкторы нажимаются 4 раза за каждый запрос, а контроллер с действующим действием получает дополнительный 5-й раз.

Я пытался уменьшить поверхность проблемы следующими способами:

  • Уменьшено до минимума количество просмотров и главной страницы (весь пользовательский код удален)
  • Уменьшил мой взгляд
  • Упростил мой контроллер до минимума
  • Упростил мой global.asax.cs до минимума

Точка останова не имеет значимой трассировки стека.

Размещен упрощенный код для http://gist.github.com/514442
Код проблемы в контексте проекта можно найти по адресу http://github.com/boriscallens/Beek

Мне не хватает идей, приветствуются любые намеки или идеи о том, как продолжить отладку.

1 Ответ

1 голос
/ 09 августа 2010

Я никогда не замечал этого раньше: / Во всяком случае, после некоторого копания я нашел, где он вызывает конструктор 4 раза.Он должен вызывать их 4 раза только один раз и кэшировать результаты (он ищет фильтры), но MvcTurbine, похоже, теряет экземпляр с кешем.

Этот класс вызывает проблемы: http://github.com/lozanotek/mvcturbine/blob/master/src/Engine/MvcTurbine.Web/Controllers/DefaultFilterFinder.cs

Если вы скопируете и вставите этот класс в свой проект и зарегистрируете его в одном из ваших IServiceRegistration классов, он будет работать так, как он должен.FilterFinder из DefaultFilterFinder)

ОБНОВЛЕНИЕ

Я понял, почему это не работает.Это потому, что когда я скачал версию 2.1 из загрузок, код, который кэширует результаты, еще не был там.Если вы загружаете последний исходный код с http://github.com/lozanotek/mvcturbine,, он работает (вы должны скомпилировать код, не использовать двоичные файлы в папке deploy).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...