.NET3.5でカスタム404CMSシステムを構築しました。データの投稿は、IIS 5.1および6.0でローカルに機能しますが、実稼働IIS6.0サーバーでは機能しません。IIS 6.0サイトの設定を項目ごとに比較しましたが、ほとんど同じですが、違いは重要ではありません。
フォームがそれぞれ「 http://domain/folder/folder/page.resource 」にPOSTされていること(コードは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)
誰かアイデアはありますか?404ページのIIS7.0で送信されないPOSTデータについて読みましたが、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の場合のみ、[IIS]>[Webサイト]>[プロパティ]>[ホームディレクトリ]タブ>[構成]ボタン>[追加]で.resource拡張子を設定して、GET、HEAD、およびPOSTを操作します。これにより、送信時に405エラーが発生するのを防ぐことができます。
編集:POSTをGETに変更しましたが、3つのケースすべてでデータが正しく送信されたため、フォームの問題ではありません。残念ながら、クエリ文字列で変数(109個あります)を渡すことができません。