5

asp.net webapi に投稿された json データを取得していますが、post パラメーターは常に null になります。データが正しくシリアル化されていません。メソッドは次のようになります。

public HttpResponseMessage Post(string id, RegistrationData registerData)

x-www-form-urlencoded問題は、コンテンツが実際には json であるにもかかわらず、クライアント (私が制御できない) が常に content-type を として送信していることです。これにより、mvc はそれをフォーム データとして逆シリアル化しようとしますが、失敗します。

webapi を常に json として逆シリアル化し、content-type ヘッダーを無視する方法はありますか?

4

2 に答える 2

9

ここで答えを見つけました:http://blog.cdeutsch.com/2012/08/force-content-types-to-json-in-net.html

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

foreach (var mediaType in config.Formatters.FormUrlEncodedFormatter.SupportedMediaTypes) 
{
    config.Formatters.JsonFormatter.SupportedMediaTypes.Add(mediaType);
}

config.Formatters.Remove(config.Formatters.FormUrlEncodedFormatter);
config.Formatters.Remove(config.Formatters.XmlFormatter);

json フォーマッターにすべてのタイプを受け入れるように指示し、フォームおよび xml フォーマッターを削除します。

于 2012-09-12T10:01:48.583 に答える
1

構成からフォーマッターを削除するのではなく、メッセージハンドラーで適切なコンテンツタイプに変更することをお勧めします

于 2012-09-12T15:36:45.730 に答える