ASP.Net MVC - странное поведение кэширования параметров в действиях

StackOverflow https://stackoverflow.com/questions/639727

Вопрос

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

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

снимок экрана

Это было полезно?

Решение

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

Другие советы

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top