ASP.Net MVC - странное поведение кэширования параметров в действиях - PullRequest
0 голосов
/ 12 марта 2009

У меня странная проблема в моем проекте. Мои действия получают старые значения параметров вместо фактических значений, которые есть в Request.Params. Я создал действие HomeController.Echo (строковый текст), чтобы проиллюстрировать его (см. Скриншот). Когда я впервые вызываю действие типа «Home / Echo? Text = aaa», все работает нормально. Когда я вызываю одно и то же действие во второй раз с другим текстовым значением («Home / Echo / text = bbb»), я снова получаю старое значение «aaa» в параметре «text» моего действия. Странно думать, что Request.Params содержит правильное значение "bbb".

Я думаю, что могу что-нибудь сломать, но ничего не могу понять. Я обслуживаю контроллеры из контейнера IoC, переопределил метод ControllerActionInvoker.InvokeActionMethodWithFilters (для вставки зависимостей в фильтры из IoC) и обрабатываю HttpApplication.AuthenticateRequest. Я никоим образом не работаю с params / binding в любом из этих ...

Скриншот

Ответы [ 3 ]

1 голос
/ 13 марта 2009

Возможно, проблема была вызвана некоторыми потоками - я забыл зарегистрировать контроллеры в своем контейнере IoC с жизненным циклом для каждого запроса (они были зарегистрированы как одиночные).

0 голосов
/ 12 марта 2009

Я предлагаю вам начать комментировать все методы, которые вы отвергли, пока не изолируете проблему. В худшем случае вы попадете в точку, в которой мастер ASP.NET MVC покинул ваш проект, когда вы его создали, и где привязка параметров определенно сработала.

0 голосов
/ 12 марта 2009

Отладили ли вы через приложение, чтобы увидеть, где значение переключается. Простое наблюдение за текстовой переменной (независимо от того, что вы называете в коде) должно привести к изменению переменной. Без кода, который я могу запустить, я понятия не имею, где это происходит.

Я бы сказал, написать тест, но все еще существует вероятность вмешательства интерфейса. Если вы найдете, где в коде он меняется, напишите тест, чтобы подтвердить ошибку и начать ее устранять.

...