0

Web API に何かを POST しようとしていますが、何をしてもモデル値は常に null に設定されます。

次のリクエストを試しました(トレースはフィドラーからコピーされました):

POST http://localhost:53176/api/Profile HTTP/1.1
Host: localhost:53176
Connection: keep-alive
Content-Length: 40
Accept: application/xml, text/xml, */*; q=0.01
Origin: http://localhost:53176
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36
Content-Type: application/x-www-form-urlencoded
Referer: http://localhost:53176/SignUp
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Cookie: ASP.NET_SessionId=do5ddqwghl3v0bhlgr3pyicb

{"InputEmail":"aa","UserName":"asd"}

更新 し、次のものも使用します。

POST http://localhost:53176/api/Profile HTTP/1.1
Host: localhost:53176
Connection: keep-alive
Content-Length: 44
Accept: application/json, text/javascript, */*; q=0.01
Origin: http://localhost:53176
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36
Content-Type: application/json
Referer: http://localhost:53176/SignUp
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Cookie: ASP.NET_SessionId=do5ddqwghl3v0bhlgr3pyicb

{"InputEmail":"asdas","UserName":"dasd"}

私のAPIは次のようになります:

    //here I have also tried [FromBody]
    public MyDto Post(MyDto input)
    {
       return input;
    }

MyDto には 2 つのプロパティがあり、次のとおりです。

public class MyDto 
{
    string InputEmail { get; set; }
    string UserName { get; set; }
}

誰かがこのコードの問題点を教えてくれますか?

また、webapi コード内のどこかにデバッガーを配置して、webapi が逆シリアル化を試みる前に実際の要求を確認する方法 (または場所) を知りたいです。

4

1 に答える 1

1

ヘッダーContent-Typeは ですapplication/x-www-form-urlencodedが、本文には json データがあります。content-type ヘッダーを次のいずれかに変更しapplication/jsonますtext/json

編集:あなたのプロパティを作るPublic

于 2013-06-29T00:36:27.077 に答える