ASP.Net MVC - Actions中的奇怪的params缓存行为

时间:2009-03-12 17:45:04

标签: asp.net-mvc caching binding action

我的项目中遇到了一个奇怪的问题。我的行为是获取旧的参数值而不是Request.Params中的实际值。我创建了一个HomeController.Echo(字符串文本)动作来说明它(见截图)。当我第一次调用这个动作时,如“Home / Echo?text = aaa”一切正常。当我第二次使用不同的文本值(“Home / Echo / text = bbb”)调用相同的动作时,我在动作“text”参数中再次获得旧的“aaa”值。奇怪的是,Request.Params包含正确的“bbb”值。

我在想是否有什么东西我可以打破自己,但无法弄明白。我正在从IoC容器中提供控制器,我重写了ControllerActionInvoker.InvokeActionMethodWithFilters方法(将依赖关系注入到IoC的过滤器中),我正在处理HttpApplication.AuthenticateRequest。无论如何,我都不会使用params / binding ...

screenshot

3 个答案:

答案 0 :(得分:1)

这个问题可能是由一些线程问题引起的 - 我忘了在每个请求生命周期中注册我的IoC容器中的控制器(它们被注册为单例)。

答案 1 :(得分:0)

您是否通过应用程序进行了调试,以查看值的切换位置。对文本变量的简单监视(无论你在代码中称之为什么)都应该产生变量变化的位置。如果没有代码可以运行,我就不知道它在哪里发生。

我会说写一个测试,但是这里仍然存在UI干扰的可能性。如果您发现代码中的位置正在发生变化,那么请编写测试以确认错误并开始对其进行打击。

答案 2 :(得分:0)

我建议您开始评论您覆盖的所有方法,直到找出问题为止。在最坏的情况下,您将在创建ASP.NET MVC向导时离开项目并且参数绑定绝对有效。