1. ホーム
  2. c#

[解決済み】Postパラメータが常にNULLになる

2022-04-10 09:31:39

質問

WebAPIのRCにアップグレードしてから、私のWebAPIでPOSTを呼び出すときに、いくつかの本当に奇妙な問題があります。 私は新しいプロジェクトで生成された基本的なバージョンに戻ったことさえあります。だから

public void Post(string value)
{
}

を作成し、Fiddlerから呼び出す。

Header:
User-Agent: Fiddler
Host: localhost:60725
Content-Type: application/json
Content-Length: 29

Body:
{
    "value": "test"
}

デバッグすると、文字列 "value"が一度も代入されていないのです。常にNULLです。 どなたか、この問題をお持ちの方はいらっしゃいますか?

(私が最初にこの問題を見たのは、もっと複雑な型でした)

この問題は ASP.NET MVC 4 に限ったことではなく、RC インストール後の新しい ASP.NET MVC 3 プロジェクトでも同じ問題が発生します。

解決方法は?

パラメータが1つしかないので、そのパラメータを [FromBody] 属性を使用するか、またはここで提案したように、プロパティとして値を持つDTOを受け入れるようにメソッドを変更します。 MVC4 RC WebApi パラメータバインディング

UPDATE: ASP.NETの公式サイトが本日更新され、素晴らしい解説が掲載されました。 https://docs.microsoft.com/en-us/aspnet/web-api/overview/advanced/sending-html-form-data-part-1

一言で言えば、ボディに単一の単純な型を送る場合は、等号(=)を前に付けた値だけを送ります(例:body)。

=test