Nicht genügend Stapel, um das Programm sicher auszuführen. ASP.NET MVC 4

8

Meine Suchfunktion scheint in einer Endlosschleife weiterzugehen, jedesmal, wenn mein Debug die Aktion unter dem POST-Actionresult trifft, wird gefeuert.

In meiner Masterpage.cshtml habe ich folgende Aktion:

%Vor%

Dies ist der Teil, der den folgenden Fehler enthält:

  

Nicht genügend Stapel, um das Programm sicher auszuführen. Das kann   passieren, wenn Sie zu viele Funktionen auf dem Call-Stack haben oder auf Funktion sind   der Stapel verwendet zu viel Stapelspeicherplatz.

In meinem SearchController habe ich eine Methode get und post actionresult:

%Vor%

Dieser gibt eine Teilansicht mit folgendem Inhalt zurück:

%Vor%

Es ist im Grunde ein Formular mit der Textbox und Absenden-Taste.

Dies ist das http post actionresult:

%Vor%

Sie gibt eine Ansicht mit einem Ansichtsmodell zurück, das die Elemente enthält, die der Abfrage entsprechen.

Wenn ich es debugge, funktioniert alles perfekt, aber alles scheint unendlich oft wiederholt zu werden.

Die Ansicht für das Suchergebnis sieht folgendermaßen aus:

%Vor%

Was geht hier genau schief, was diese Endlosschleife verursacht? und wie kann ich es reparieren?

In der Stapelüberwachung habe ich diese Ausnahmen gefunden

%Vor%      

'System.Web.Mvc.HttpHandlerUtil + ServerExecuteHttpHandlerAsyncWrapper'.]

Diese Ausnahme scheint wiederholt zu werden

    
Obsivus 20.05.2013, 21:36
quelle

3 Antworten

8

Html.Action in der Masterseite ruft die Search-Methode mit einer POST-Anforderung auf, sodass das Framework nicht die Aktion aufruft, die die Teilansicht zurückgibt, sondern die andere, die ein ViewResult mit der Masterseite zurückgibt. Das Gleiche wird wieder passieren und Sie werden rekursive Aufrufe machen.

Die einfachste Lösung wäre, die Suchaktion, die auf eine POST-Anfrage reagiert, umzubenennen. Stellen Sie außerdem sicher, dass Ihr Formular für diese Aktion einen Post-Vorgang durchführt, aber behalten Sie den gleichen Html.Action -Aufruf.

Es scheint, als würde Framework immer noch versuchen, die Aktion zu finden, die auf eine POST-Anfrage antworten kann. Das Entfernen des HttpGet -Attributs aus der Suchaktion löst dieses Problem.

    
Ufuk Hacıoğulları 20.05.2013, 21:54
quelle
2

Es sieht die Teilansicht nicht als "Teilansicht". Ich hatte genau das selbe Problem aber addieren %Code% In der Ansicht wird sichergestellt, dass die Ansicht nicht als normale Ansicht betrachtet wird, die die _Layout-Ansicht lädt.

    
Gabriel 10.09.2014 13:51
quelle
0

Mein Problem ist, dass ich eine neue Ansicht über Visual Studio hinzugefügt habe und eine _ViewStart.cshtml-Seite hinzugefügt habe, die ein Layout hatte, das Rekursion verursachte.

    
Ben 04.10.2016 20:28
quelle