Я создал систему Custom 404 CMS в .NET 3.5, и хотя отправка данных работает локально в IIS 5.1 и 6.0, она не работает на производственном сервере IIS 6.0. Я сравнил настройки сайта IIS 6.0 элемент за элементом, и они почти идентичны, с единственной разницей, не имеющей значения.
Я подтвердил, что форма отправляется POST на "http://domain/folder/folder/page.resource "в каждом случае (код находится в SVN) и что при отправке перенаправления не происходит (я создавал исключения, чтобы убедиться). Некоторая отладочная информация по серверу:
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)
У кого-нибудь есть идеи? Я читал о том, что данные POST не отправляются в IIS 7.0 для страниц 404, но не в 6.0. Моя форма находится в таком формате:
<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>
Только для IIS 5.1 я настраиваю расширение .resource в «IIS> Веб-сайт> Свойства> вкладка« Домашний каталог »> Кнопка« Конфигурация »>« Добавить »для работы с GET, HEAD и POST. Это предотвращает появление ошибок 405 при отправке.
Изменить: я изменил POST на GET, и во всех 3 случаях он правильно отправил данные, поэтому это не проблема формы. К сожалению, я не могу передать переменные (их 109) в строку запроса.