簡體   English   中英

ASP.NET WebApi 4發布FromBody不綁定JSON

[英]ASP.NET WebApi 4 Post FromBody Not Binding From JSON

我有一個簡單的問題。 我正在ASP.NET WebApi 4中構建HTTP REST服務,我在使模型綁定工作時遇到了一些麻煩。

我使用以下代碼接受POST HTTP請求並處理登錄。 從我可以收集的內容中,ASP.NET WebApi 4將為您反序列化JSON並綁定到接受的模型。 我已經設置了我的模型,但每當我通過調試器測試服務時,我在UserPostData對象上得到一個NullReferenceExecption。

從我可以告訴我的一切設置正確,但它只是沒有工作。 以下是我發布的JSON。 有誰知道我為什么會收到此錯誤?

JSON [{“用戶名”:“mneill”,“密碼”:“12345”}]

來自WebApi 4控制器類的代碼

public class UserPostData
{
    public string Username { get; set; }
    public string Password { get; set; }
}

public class UserController : ApiController
{
    //
    // GET: /User/

    public string[] Get(string username)
    {
        return new string[]
        {
            "username",
            username
        };
    }

    public HttpResponseMessage Post([FromBody] UserPostData body)
    {
        //string username = postData.Username;
        //string password = postData.Password;

        HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.OK);

        if (body.Username == null)
            response.StatusCode = HttpStatusCode.NotFound;
        if (body.Password == null)
            response.StatusCode = HttpStatusCode.NotFound;

        return response;
    }
}

確保您的請求中包含Content-Type標頭。

修改您的Json如下所示:

{ "Username": "mneill", "Password": "12345" }

並在Post操作中添加以下代碼以查看任何模型綁定錯誤:

if (!ModelState.IsValid)
        {
            throw new HttpResponseException(Request.CreateErrorResponse(HttpStatusCode.BadRequest, this.ModelState));
        }

我不知道這是否只是您的格式,但您當前的JSON表示包含一個UserPostData類型元素的UserPostData 如果這是真的改變您發送對象而不是數組的請求或更改您的控制器以支持數組。

順便說一下, FromBody是類似復雜類型的默認行為。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM