Ich versuche, AjaxControlToolkit NoBot zu implementieren, aber ich bekomme immer falsch von IsValid()
Methode (der Statuswert ist immer InvalidBadResponse ). Fehle ich hier etwas?
ASCX-Code:
%Vor%Code dahinter:
%Vor% Weitaus seltsamer ist das: Ich gebe Daten für die Anmeldung ein und klicke auf die ASP-Schaltfläche. NoBot state ist InvalidBadResponse
und es schlägt fehl. Aber, dann klicke ich auf den Aktualisierungsknopf des Browsers, es fragt mich, Anfrage erneut zu senden, sage ich ok und jetzt ist der Zustand gültig! Warum?
Der einzige Grund, den ich kenne, dass Sie erhalten eine „ InvalidBadResponse “ von der NoBot
Kontrolle ist, wenn Sie Javascript in Ihrem Browser deaktiviert haben. Die Dokumentationsseite besagt, dass eine der Techniken, die von NoBot
beträgt
Erzwingt, dass der Browser des Clients ein konfigurierbares JavaScript ausführt Berechnung und Überprüfung des Ergebnisses als Teil des Postbacks. (Beispiel: die Die Berechnung kann eine einfache numerische sein oder auch das DOM beinhalten für zusätzliche Sicherheit, dass ein Browser beteiligt ist)
Ein " InvalidBadRespone " Meldung bedeutet, dass der Javascript nicht (auch oben vom Link) erhalten ausgeführt haben:
InvalidBadResponse: Der Abfrage wurde eine ungültige Antwort zugewiesen schlägt vor, dass das Challenge-Skript nicht ausgeführt wurde
Ich würde Ihre Browsereinstellungen überprüfen. Ich habe dies getestet, indem ich JavaScript in meinem Browser deaktiviert habe (nur um sicherzugehen) und das Beispiel auf der Dokumentationsseite versucht habe.
Sie können die Berechnung mithilfe des Attributs OnGenerateChallengeAndResponse
anpassen, um einen Ereignishandler anzugeben. Ich gutes Beispiel für ein solches Event-Handler-Implementierung ist dies (Code Kredit diese posten ):
Wie in anderen Antworten erwähnt, ist InvalidBadResponse aufgrund der fehlgeschlagenen JavaScript-Abfrage fehlgeschlagen.
Das Problem:
Der Grund, warum es für mich fehlgeschlagen ist, war, dass die ASP.NET-Ajax-Bibliotheken, die benötigt wurden, nicht geladen werden konnten; Schau dir den Javascript Debugger deines Browsers an. so sah mein (in Chrome) aus wie
Wie Sie sehen können, wurden die .axd
Dateien nicht geliefert und der Fehler ASP.NET Ajax client-side framework failed to load
Fehler war ziemlich aussagekräftig.
Die Ursache: (in meinem Fall)
Ich hatte eine URL Umschreiben Regel, dass das .axd
Urls versehentlich verändert -. Wodurch sie nicht bedient werden
Ich würde empfehlen, Ihre web.config
zu überprüfen, falls nötig, die Zeile hinzuzufügen
zu deinen Regeln und diesem
%Vor% in Ihrem Global.asax
(wenn Sie einen haben) wo (und wenn) Sie Routen registrieren.
Überprüfen Sie dieses SO beantworten out: Ajax-Client-seitiges Framework konnte Asp.Net 4.0 nicht laden
Eine weitere mögliche Ursache könnte der ViewStateMode des Masters, der Seite oder des Steuerelements sein, der auf Disabled gesetzt ist. Scheint, dass es aktiviert sein muss, damit der NoBot nicht richtig funktioniert.
Ich habe auf der CMS-Hauptseite einige Tests mit ViewStateMode="Disabled" durchgeführt, und NoBotState hat begonnen, InvalidBadResponses auf meiner Anmeldeseite zurückzugeben. Wenn ich es in ViewStateMode="Enabled" ändere, wurde es für mich repariert.
Tags und Links c# asp.net ajaxcontroltoolkit