7

そこで、CORSを使用してAJAX投稿からサーバーに複雑なオブジェクトをPOST(またはPUT)したいと思います。残念ながら、IE8はCORSを使用する場合にのみテキスト/プレーンの送信をサポートし、をサポートしませんapplication/json

WebAPIカスタム解析テキスト/プレーン送信にハンドラーを実装する方法はありますか?

複雑なオブジェクトとは

public void POST([FromBody] MyCustomObject myResponse)
{
   return null;
}

通常、ヘッダーを適切に設定してJSONを投稿しますが、IE8の制限により、ヘッダーを設定するとすぐにアクセスが拒否されて失敗するため、テキスト/プレーンである必要があるため、JSON文字列を送信する予定です。しかし、テキスト/プレーンと呼ばれます(醜い私は知っています!)が、より良いオプションがないため...

4

2 に答える 2

11

WebApiアプリケーションが実際にJSONのみを使用している場合は、このソリューションを使用して、常にJSONで応答し、リクエストのコンテンツタイプを無視することができます。

asp.netwebapiにPOSTデータを常にJSONとしてデコードさせるにはどうすればよいですか?

それから、私はこの解決策を提案します:

このコードは、Application_StartまたはWebApiConfig.Registerに追加する必要があります

config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/plain"));
config.Formatters.Remove(config.Formatters.FormUrlEncodedFormatter);
config.Formatters.Remove(config.Formatters.XmlFormatter);

プレーンテキストのcontent-typeを受け入れるようにjsonフォーマッターに指示し、フォームとxmlフォーマッターを削除します(ただし、削除する必要はない場合があります)

于 2013-03-25T19:16:31.100 に答える
2

醜いですが、メッセージハンドラーでcontent-typeヘッダーをtext/plainからapplication/jsonに変更して、パラメーターバインディングがjsonフォーマッターで適切に行われるようにすることができます。

于 2013-03-25T18:56:20.933 に答える