2012-03-19 9 views
0

JSONを使用してAJAXフォーム投稿を実行する.NET MVCサイトがあります。検証エラーが発生した場合(つまり、ユーザーが必須フィールドなどを紛失した場合)、サーバーはJSONオブジェクトに検証エラーを返し、レスポンスのHTTPステータスコードを400の範囲に設定します。私たちのローカルマシンでは、これは絶対にうまく動作します。4xxサーバーからの応答にJSONデータが含まれていません

しかし、私たちのCI環境では、コードを変更せずに突然停止しました。レスポンスは正しいHTTPコードでサーバーから返されますが、コンテンツはJSONコントローラから返されるのではなく、標準の.NETエラーページHTML、つまりステータスコードが400の場合は11バイトの「Bad Request」レスポンスです。

エラーコードは各検証エラーで正しいので、コントローラ/アクションが正しく実行されており、検証は正しく機能していますが、何らかの理由でJSONが切り捨てられています。これがなぜ起こっているのでしょうか?

+0

サーバーが*成功*検証のために400の範囲のコードを返すという事実(*結果*が実際には無効であることを示しているかもしれませんが)がHTTPを悪用しています。あなたが最初にやらなければならないように200 OKを返すと、問題は魔法のように消え去る。 – Jon

+0

もっと適切なコードがありますか?または、検証が失敗した場合でもJSONに「success」フィールドを含めて200を返す方が良いでしょうか? –

+0

2番目のオプション。 – Jon

答えて

0

リクエスト構文が正しくないため、400コードが表示されています。実際にjsonデータを正しくエンコードしているかどうか確認してください。

関連する問題