application/json
Content-type ヘッダーでリクエストを使用して呼び出されるアクションがあります。これらのリクエストは、リクエストのコンテンツを逆シリアル化しようとする JsonValueProvider を自動的に作成します。json の形式が正しくない場合、値プロバイダーはアプリケーションのエラー ページにつながる例外をスローします。
この動作を再現するにapplication/json
は、Content-type ヘッダーとして送信するアクションに無効な json データを単純に POST します。これにより、例外がトリガーされます。
[編集]
多くのコードは必要ありません。空のコントローラー メソッドを作成し、Firefox の「Poster」などのツールを使用して、無効なリクエストをアクションに送信するだけです。
public class HomeController
{
public ActionResult Index()
{
return this.Json(true);
}
}
次に、ポスターを使用します。
- コンテンツタイプをに設定
application/json
- リクエスト内容を
{"This is invalid JSON:,}
- リクエストを送信
その結果、本格的な標準の ASP.NET HTML エラー ページが表示されます (アプリケーションに応じて、汎用またはカスタム)。
[/編集]
私のアクションは組み込みデバイスによって呼び出されるため、HTML エラー ページの代わりに短い応答を送信したいと考えています。text/plain
ステータス コード 500、 Content-type: 、およびコンテンツとしての例外のメッセージを含む応答を作成できるようにしたいと考えています。
カスタム モデル バインダーとカスタム エラー ハンドラー属性を既に試しましたが、処理パイプラインの早い段階で例外が発生したため、どちらも呼び出されませんでした。このエラーを処理する方法はありますか?
回避策として、私は現在、アプリケーション全体で JsonValueProvider を無効にし、リクエストの本文から自分で値をロードしています。アクションごとに JsonValueProvider を無効にする方法があれば、これも役立ちます。
ご指摘ありがとうございます。