Ich habe ein benutzerdefiniertes 404-CMS-System in .NET 3.5 erstellt, und während Daten in IIS 5.1 und 6.0 lokal veröffentlicht werden, funktioniert es auf dem Produktions-IIS 6.0-Server nicht. Ich habe die IIS 6.0-Websiteeinstellungen Element für Element verglichen, und sie sind fast identisch, wobei die einzigen Unterschiede keine Rolle spielen.Warum werden POST-Daten verloren, wenn von einer benutzerdefinierten 404-Seite in IIS 6.0 gesendet wird?
Ich verifiziert, dass das Formular POST-in "http://domain/folder/folder/page.resource" in jedem Fall ist (Code ist in SVN) und keine Umleitungen auftreten, wenn sie gesendet (Ich warf Ausnahmen um sicherzustellen, dass). Einige Debug-Informationen nach Server:
IIS 5.1 (my computer, works):
ServerVariables["REQUEST_METHOD"]="POST"
Request.TotalBytes = 1600
Request.QueryString.Count = 1 (NOTE: contains "404;http://domain:80/folder/folder/page.resource" in each case)
Request.Form.Count = 109
IIS 6.0 (test server, works):
ServerVariables["REQUEST_METHOD"]="GET" (NOTE: IIS 6.0 reads this as "GET" instead of "POST")
Request.TotalBytes = 1600
Request.QueryString.Count = 1
Request.Form.Count = 109
IIS 6.0 (production server, does not work):
ServerVariables["REQUEST_METHOD"]="GET"
Request.TotalBytes = 0 (NOTE: should be ~1600)
Request.QueryString.Count = 1
Request.Form.Count = 0 (NOTE: should be 109)
Hat jemand irgendwelche Ideen? Ich habe gelesen, dass POST-Daten nicht in IIS 7.0 für 404 Seiten, sondern nicht in 6.0 übermittelt wurden. Meine Form ist in diesem Format:
<form id="GolfRegistration" name="GolfRegistration" method="POST" action="/folder/folder/page.resource" onSubmit="return CalculateAmount();">
<input type="button" value="Submit" onClick="if(ValidateInput()){submit(GolfRegistration);}">
</form>
Für IIS 5.1 nur, ich Setup die .resource Erweiterung in "IIS> Website> Eigenschaften> Registerkarte Basisverzeichnis> Schaltfläche Konfiguration> Add" mit GET, HEAD zu arbeiten, und POST. Dies verhindert, dass ich beim Senden 405 Fehler erhalte.
Edit: Ich änderte den POST zu GET und in allen 3 Fällen übermittelte es die Daten korrekt, so ist es kein Formproblem. Leider kann ich die Variablen (es gibt 109) in der Querystring nicht übergeben.
Warum das "c" -Tag? – BobbyShaftoe