0

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

我在想是否有什么我可以打破自己,但无法弄清楚任何事情。我从 IoC 容器提供控制器,我重写了 ControllerActionInvoker.InvokeActionMethodWithFilters 方法(将依赖项注入到来自 IoC 的过滤器中)并且我正在处理 HttpApplication.AuthenticateRequest。在任何这些中,我都不使用参数/绑定...

截屏

4

3 回答 3

1

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

于 2009-03-13T14:37:43.503 回答
0

您是否已通过应用程序进行调试以查看值在何处被切换。对文本变量(无论您在代码中如何称呼它)进行简单的观察应该会在变量发生更改的位置产生。如果没有要运行的代码,我不知道它发生在哪里。

我会说写一个测试,但这里仍然有 UI 干扰的可能性。如果你发现它在代码中的哪个地方发生了变化,然后编写一个测试来确认这个错误并开始处理它。

于 2009-03-12T17:54:49.437 回答
0

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

于 2009-03-12T17:56:08.997 回答