Question

Je suis confronté à un problème étrange dans mon projet. Mes actions récupèrent les anciennes valeurs param à la place des valeurs réelles qui se trouvent dans Request.Params. J'ai créé une action HomeController.Echo (chaîne de texte) pour l'illustrer (voir la capture d'écran). Lorsque j'appelle l'action pour la première fois, par exemple, "Home / Echo? Text = aaa". tout fonctionne bien. Lorsque j'appelle la même action une seconde fois avec une valeur de texte différente ("Home / Echo / text = bbb"), je récupère l'ancien "aaa". valoriser à nouveau dans mon action " texte " paramètre. C'est étrange de penser que Request.Params contient le droit "bbb". valeur.

Je pense que je pourrais me casser quelque chose, mais je ne peux rien comprendre. Je sers des contrôleurs depuis un conteneur IoC, j'ai redéfini la méthode ControllerActionInvoker.InvokeActionMethodWithFilters (pour injecter des dépendances dans des filtres à partir d'IoC) et je gère HttpApplication.AuthenticateRequest. Je ne travaille en aucun cas avec params / binding dans aucun de ces ...

capture d'écran

Était-ce utile?

La solution

Le problème était probablement dû à des problèmes de threading - j'ai oublié d'enregistrer les contrôleurs dans mon conteneur IoC avec un cycle de vie par requête (ils étaient enregistrés en tant que singletons).

Autres conseils

Avez-vous débogué via l’application pour voir où la valeur est remplacée? Une simple surveillance de la variable de texte (comme vous l'appelez dans le code) devrait indiquer où la variable est modifiée. Sans code à exécuter, je ne sais pas où cela se passe.

Je dirais d’écrire un test, mais il est toujours possible que l’interface utilisateur interfère ici. Si vous trouvez où, dans le code, il change, écrivez un test pour confirmer le bogue et commencez à le frapper.

Je vous suggère de commencer à commenter toutes les méthodes que vous avez ignorées jusqu'à ce que vous isoliez le problème. Dans le pire des cas, vous arriverez au point où l’assistant ASP.NET MVC a quitté votre projet lors de sa création et où la liaison de paramètres a définitivement fonctionné.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top