2009-03-12 9 views
0

Ich stehe in meinem Projekt vor einem seltsamen Problem. Meine Aktionen erhalten alte Param-Werte anstelle der tatsächlichen Werte in Request.Params. Ich habe eine Aktion HomeController.Echo (string text) erstellt, um sie zu veranschaulichen (siehe Screenshot). Wenn ich die Aktion zum ersten Mal rufe wie "Home/Echo? Text = aaa" funktioniert alles. Wenn ich dieselbe Aktion das zweite Mal mit einem anderen Textwert ("Home/Echo/text = bbb") anrufe, erhalte ich den alten "aaa" -Wert wieder in meinem Aktionsparameter "text". Seltsam ist, dass Request.Params den richtigen "bbb" -Wert enthält.ASP.Net MVC - seltsames Verhalten beim Zwischenspeichern von Parametern in Aktionen

Ich denke, wenn es etwas gibt, könnte ich mich selbst brechen, aber kann nichts herausfinden. Ich serviere Controller aus IoC-Container, übersteuerte ich ControllerActionInvoker.InvokeActionMethodWithFilters-Methode (um Abhängigkeiten in Filter von IoC injizieren) und ich handle HttpApplication.AuthenticateRequest. Im'not mit params Arbeits/Bindung ohnehin in einer dieser ...

screenshot

Antwort

1

Das Problem wurde wahrscheinlich durch einige Threading-Probleme verursacht - Ich habe vergessen, Controller in meinem IoC-Container mit Lebenszyklus pro Anfrage zu registrieren (sie wurden als Singletons registriert).

0

Haben Sie durch die Anwendung debuggt, um zu sehen, wo der Wert sich immer geschaltet wird. Eine einfache Überwachung der Textvariablen (wie auch immer Sie es im Code nennen) sollte ergeben, wo die Variable geändert wird. Ohne Code zum Durchlaufen habe ich keine Ahnung, wo es passiert.

Ich würde sagen, einen Test schreiben, aber es gibt immer noch eine Möglichkeit der UI hier stören. Wenn Sie herausfinden, wo sich der Code ändert, schreiben Sie einen Test, um den Fehler zu bestätigen und mit dem Fehler zu beginnen.

0

Ich empfehle Ihnen, alle Methoden zu kommentieren, die Sie überschreiben, bis Sie das Problem isolieren. Im schlimmsten Fall gelangen Sie zu dem Punkt, an dem der ASP.NET MVC-Assistent Ihr Projekt verlassen hat, als Sie es erstellt haben und wo die Parameterbindung definitiv funktioniert hat.

+0

Es sieht aus wie es von MvcContrib.Castle.WindsorControllerFactory verursacht wird, die ich für die Bereitstellung von Controllern aus IoC-Container verwende. Die Parameter funktionieren in Ordnung, wenn ich die Zeile ControllerBuilder.Current.SetControllerFactory() auskommentiere. Ich werde versuchen, mehr Details zu erfahren ... – Buthrakaur