ASP.Net MVC: comportamiento de almacenamiento en caché de parámetros extraños en acciones

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

Pregunta

Estoy enfrentando un extraño problema en mi proyecto. Mis acciones están obteniendo valores de parámetros antiguos en lugar de los valores reales que están en Request.Params. Creé una acción HomeController.Echo (texto de cadena) para ilustrarlo (ver captura de pantalla). Cuando llamo a la acción por primera vez como "Inicio / Eco? Text = aaa" Todo funciona bien. Cuando llamo a la misma acción por segunda vez con un valor de texto diferente (" Home / Echo / text = bbb "), obtengo el viejo " aaa " valor de nuevo en mi acción " texto " parámetro. Es extraño pensar que Request.Params contiene el correcto "bbb" valor.

Estoy pensando si hay algo que podría romper, pero no puedo entender nada. Estoy sirviendo controladores desde el contenedor de IoC, anulé el método ControllerActionInvoker.InvokeActionMethodWithFilters (para inyectar dependencias en los filtros de IoC) y estoy manejando HttpApplication.AuthenticateRequest. No estoy trabajando con parámetros / enlaces de ninguna manera en ninguno de estos ...

captura de pantalla

¿Fue útil?

Solución

El problema probablemente fue causado por algunos problemas de subprocesos: olvidé registrar los controladores en mi contenedor de IoC con un ciclo de vida por solicitud (se registraron como singletons).

Otros consejos

¿Ha depurado a través de la aplicación para ver dónde se cambia el valor? Una simple observación de la variable de texto (como se llame en el código) debería producir dónde se modifica la variable. Sin código para ejecutar, no tengo idea de dónde está sucediendo.

Diría que escriba una prueba, pero todavía existe la posibilidad de que la IU interfiera aquí. Si encuentra en qué parte del código está cambiando, escriba una prueba para confirmar el error y comenzar a atacarlo.

Te sugiero que comiences a comentar todos los métodos que anulaste hasta aislar el problema. En el peor de los casos, llegará al punto donde el asistente ASP.NET MVC dejó su proyecto cuando lo creó y donde el enlace de parámetros definitivamente funcionó.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top