Ich bin mit asp.net Post Problem mit den letzten 2 Wochen fest.
Szenario:
Meine Anwendungsseite hat drei Steuerelemente. Ein WYSIWYG-Editor (Freie Textbox), ein Textfeld, um den Namen des Artikels zu erhalten, der im WYSIWYG-Editor bearbeitet wird, ein weiteres Textfeld, um Schlüsselwörter zu akzeptieren.
Reihenfolge der Steuerelemente auf der Seite von oben nach unten wie folgt,
zuerst, Name Textfeld
zweitens, WYSIWYG-Editor
zuletzt, Schlüsselwort-Textfeld
Problem:
Immer wenn Benutzer versuchen, ihre bearbeiteten Dokumente zu speichern, gibt der IIS-Server eine Zeitüberschreitung zurück (die Produktion läuft auf win 2008). Interessanterweise werden die Boxinformationen "Name text" und die Hälfte des WYSIWYG Editors (es ist nicht genau die Hälfte, es variiert für jeden Fall) in der Datenbank gespeichert. aber das letzte Feld "Keyword-Text" wird nicht gespeichert. Während dieser Web-Server für eine Weile hängt, tritt der Benutzer und später nach wenigen Minuten wieder auf normale Geschwindigkeit. Ich denke App Pool ist recycelt. Aber alles funktioniert gut in meiner Entwicklungsumgebung (in meinem PC läuft auf Win 7 64bit). Außerdem habe ich ValidateRequest="False" in der Seitendirektive für die Produktions- und Entwicklungsumgebung gesetzt.
Umgebung:
Umgebung .NET 4.0, ASP.NET
FreeText-Feld WYSIWYG-Editor
Shared Hosting Windows 2008
SQL Server 2008
Erprobte Lösungen (aber kein Durchbruch ):
Versucht mit anderem Browser Firefox, Chrome, IE und gleichem Fehler.
Hinzugefügt ValidateRequest="False" in der Seitendirektive und ersetzt WYSIWYG-Editor mit Nur-Text-Feld und versucht zu speichern, das gleiche Problem.
Ich habe gerade versucht, die Post-Daten direkt von page.request Objekt zu protokollieren. Immer noch vollständige Daten für "Name Textfeld" die Hälfte für WYSIWYG Textfeld und nichts für den Rest.
Es gibt kein Problem bei DB-Verbindung oder Tabellenfeld. Ich habe dreifach überprüft.
Mögliche Verdächtigungen und Fragen:
Nach meinem Wissen gibt es keine Begrenzung für die Länge der Postdaten. aber in IIS ist es möglich, dies zu überschreiben? frage mich, ob dies auf meinem Shared-Hosting eingestellt ist.
Grundsätzlich werden HTTP-Post-Daten irgendwo zwischen Browser und Server.Request-Objekt abgeschnitten. Was wäre der Grund, wenn das passiert?
Wenn HTTP-Post abgeschnitten ist, warum die gesamte Anwendung hängt (oder neu startet)?
Welche Vorkehrungen müssen getroffen werden, wenn HTML-Inhalte als http-Post veröffentlicht werden?
Danke.
Neue Suche:
Hat meinen Beitrag mit httpfox überprüft. Die Postgröße betrug ungefähr 9958 Bytes. Aber firefox sendet zuerst 330 Bytes der Daten und dann hängt Web-Seite. Nach etwa einer Minute bekomme ich NS_ERROR_NET_RESET Fehlercode in httpfox.
Hat meinen Post mit filder2 mit IE9 überprüft. Es versucht zuerst 512 Bytes zu senden, dann hängt es. Rückgabe "ReadResponse () fehlgeschlagen: Der Server hat keine Antwort für diese Anfrage zurückgegeben."
Frage:
Dies ist wahrscheinlich ein Browser- oder Serverproblem. Ich denke, wenn Browser-Problem, wird dies nicht für IE und Firefox passieren.
Aktualisierung:
Wahrscheinlich isoliert das Problem gegenüber Web-Hosting. Getestet durch das Ändern der Form post URL zu einer anderen Domain und sehen, ob Werte in dieser Domain abgerufen werden können. Ja es funktioniert. Nur hat es nicht für meine Domain funktioniert. Interessanterweise habe ich das für den normalen HTML-Seitenpost getestet. es hat auch nicht funktioniert. Also wahrscheinlich eine Sicherheit installiert, um diese oder Server Fehlkonfiguration zu verhindern. Stellen Sie schon ein Ticket zu ihnen und warten.
Wie auch immer Ihr Feed-back mir geholfen hat, das Problem zu isolieren.
Gelöst:
Ja, dieses Problem war auf unserer Webhosting-Seite. Bisher habe ich von ihnen gehört, dass eine Firewall den großen Post von http blockiert. Sie sagten, jetzt ist unsere Domain weiß gelistet. Wie auch immer, jetzt funktioniert es. Aber das aß 2 Wochen meiner Zeit, aber es war eine gute Lernerfahrung. Danke Leute für deine Hilfe. Wirklich geschätzt.
Ich habe denselben Fehler auf einer Webseite. Es war sehr verdrahtet, denn wenn ich Proxy benutze, würde der Fehler weit gehen, wenn ich von meinem Computer aus direkt angerufen werde, habe ich eine Auszeit und fahre nie fort.
Die Seite, auf der diese Ausgabe bis Dezember / 2011 erscheint, ist die Ссылка Die gleiche Seite funktioniert, wenn ich mit der mobilen Version davon gehe.
Nach vielen Überprüfungen mit der obigen Seite stelle ich fest, dass das Problem mit dem sehr großen Viewstate zusammenhängt! Wie ich es finde : Ich speichere einen HTML-Teil meiner Seite, wie er gerendert wurde, und entferne Elemente aus dem HTML und mache einen Beitrag, bis ich feststelle, dass der Beitrag fortgesetzt wird, wenn ich den View-State-Beitrag verkleinere.
Die Lösung bestand darin, den Anzeigestatus bei vielen nicht benötigten Steuerelementen zu deaktivieren und die verbleibenden Poststatusdaten in einem kleineren Teil zu komprimieren und auszuschneiden.
Sie können googlen und viele Möglichkeiten finden, den Ansichtszustand in Teilen zu komprimieren und zu schneiden.
Einige Artikel:
Wie schneidet man es tutorial:
Ссылка
wie man es komprimiert
Ссылка
Zusammenfassung
Ссылка
Ps: In dieser Demo-Seite der kostenlosen TextBox , die Sie verwenden, ist der Viewstatus riesig! und es ist sogar leer von Text, stell dir vor, wie groß der Viewstate sein kann, wenn du tatsächlich einen Text hast und drinstext. Nicht so frei - die Kosten sind der riesige Viewstate.
Wie Jeyara zu den Kommentaren unten sagen, war dies der Fehler, eine Blockierung großer Post-Dateien durch eine Firewall auf dem Hosting-Server.
Der Fehler / Timeout hat also mit großen Postback-Daten zu tun und ist ein seltenes, aber bestehendes Problem.
Haben Sie sich angesehen, was zurückgeschickt wird?
Versuchen Sie etwas wie Fiddler2 , um das Postback anzuzeigen.
Sie können feststellen, dass etwas im Browser abgeschnitten wird.
Der RichText-Bereich kann auch durch die Anzahl der Zeichen begrenzt sein, die zurückgeschrieben werden.
Versuchen Sie Folgendes: Fügen Sie in Ihrer web.config Folgendes hinzu:
%Vor% irgendwo in <system.web>
tag, da die Standardanfragelänge 8096 ist, könnten Ihre Postdata größer sein als diese, also fügen Sie sie mit einem größeren Wert als ich zur Verfügung gestellt. Hoffe das soll helfen.
Tags und Links .net .net-4.0 asp.net iis asp.net-4.0