Ich erhalte den Fehler:
Der Ausdruck kann nicht ausgewertet werden, da der Code optimiert ist oder sich ein nativer Frame über dem Aufrufstapel befindet.
Ich habe im itemcommand-Ereignis des Repeaters auf eine neue Seite umgeleitet. Der Fehler tritt an der Zeile auf:
string url = "~/Galleries/AlbumImageList.aspx?UId=" + this.UserId.ToString() + "&AlbumId=" + e.CommandArgument.ToString();
Response.Redirect(url);
Kann mir bitte jemand helfen? Stimmt da etwas nicht? Das _COMPlusExceptionCode
ist - 532459699
.
Machen Sie das zweite Argument von
Response
false wie unten gezeigt.quelle
Auflösung
Symptome
Ursache
Status
Eigenschaften
Quelle: PRB: ThreadAbortException tritt auf, wenn Sie Response.End, Response.Redirect oder Server.Transfer verwenden
quelle
In einem Fehler, den ich untersucht habe, gab es eine Response.Redirect (), die an einem unerwarteten Speicherort ausgeführt wurde ( lesen Sie: unangemessener Speicherort - innerhalb einer Getter-Methode für Elementeigenschaften ).
Wenn Sie ein Problem debuggen und die Ausnahme " Ausdruck kann nicht ausgewertet werden ... " auftritt:
Response.Redirect()
und machen Sie entweder den zweiten Parameter endResponse = false oderDies war frustrierend, da es den Anschein hatte, als würde der Redirect-Aufruf ausgeführt, bevor der "Step Through" des Debuggers diesen Speicherort erreicht hatte.
quelle
Bitte überprüfen Sie diesen Link auf den Grund für dieses Problem und die Lösung für den Fehler:
http://support.microsoft.com/kb/312629/EN-US/
Microsoft Support-Artikel:
PRB: ThreadAbortException tritt auf, wenn Sie Response.End, Response.Redirect oder Server.Transfer Print Print Email E-Mail verwenden
quelle
Ich hatte auch das gleiche Problem und es war schwierig. Für mich lag es daran, dass ich die Javascript-Bibliothek von Ext.J verwende. Wenn Sie eine response.redirect im serverseitigen Code ausführen, auf den Sie bei einem Ajax-Aufruf zugegriffen haben , treten Probleme auf. Ext.js hat eine Problemumgehung mit der Ext.Redirect-Methode.
quelle
Verwenden Sie diesen Code, um das Problem zu lösen:
quelle
Auch können Sie verwenden
Server.Execute
quelle
Nur umhüllen, dass jemand anderes auf die Probleme gestoßen ist, die ich bei der Verwendung von Response.End () als asynchroner Auslösetaste hatte
in einem Update-Panel. Ich wechselte zum regulären Post zurück nicht das Beste, aber es hat funktioniert.
Da ich nur auf die Seite umleitete, war dies eine praktikable Lösung.
quelle
Wenn Sie Update Panel und Link Button zum Herunterladen von Excel verwenden, befindet sich innerhalb des Panels ein Postback-Trigger
und im Code hinter dem Inside-Click-Ereignis
quelle
Verwenden Sie dies, funktioniert für mich immer.
Hier leitet Response.Redirect (Request.RawUrl) einfach zur URL des aktuellen Kontexts um, während der zweite Parameter "false" entweder endResponse angibt oder nicht.
quelle
Dieses Problem kann auftreten, wenn Sie eine Rasiermesserseite in MVC mit einem Modell haben, das einige Validierungsregeln enthält. Wenn Sie aus einem Formular posten und vergessen, Validierungsfehler in einem Feld anzuzeigen, wird diese Meldung möglicherweise angezeigt. Spekulation: Dies kann der Fall sein, wenn die Methode, an die Sie senden, anders ist und von anderen Quellen verwendet wird oder sich an einem anderen Ort befindet als die Methode, die die ursprüngliche Anforderung bedient.
Da es anders ist, kann es nicht zur ursprünglichen Seite zurückkehren, um die Fehler anzuzeigen oder zu behandeln, da die Ausführung und der Modellstatus nicht identisch sind (so ähnlich).
Es kann etwas schwierig zu entdecken sein, aber es ist leicht, einen Fehler zu machen. Stellen Sie sicher, dass Ihre Empfangsmethode tatsächlich alle möglichen Möglichkeiten zum Posten überprüft.
Selbst wenn Sie beispielsweise eine serverseitige Validierung haben, die es tatsächlich unmöglich macht, eine Zeichenfolge in die Form zu schreiben, die größer als das von Ihrer Validierung zulässige Maximum ist, kann es andere Möglichkeiten und Quellen geben, die an die Empfangsmethode senden.
quelle