猿问

webapi 参数为空

我正在开始 WebApi 教程,但我刚刚遇到了一个问题,即正在运行的参数为空。


下面是教程代码。


网络接口


[AllowAnonymous]

[Route("Register")]

public async Task<IHttpActionResult> Register(RegisterBindingModel model)

{

    if (!ModelState.IsValid)

    {

        return BadRequest(ModelState);

    }

    var raw = Request.Content.ReadAsStringAsync();

    var user = new ApplicationUser() { UserName = model.Email, Email = model.Email };


    IdentityResult result = await UserManager.CreateAsync(user, Result.Password);


    if (!result.Succeeded)

    {

       return GetErrorResult(result);

    }


    return Ok();

    }

WebApi 客户端


static string Register(string email, string password)

{

    var Result = new RegisterBindingModel()

    {

        Email = email,

        Password = password,

        ConfirmPassword = password

    };

    using (var client = new HttpClient())

    {

        var response = client.PostAsJsonAsync(

                "http://localhost:7399/api/Account/Register",

                 Result).Result;

        return response.StatusCode.ToString();

    }

    }

注册操作收到 http 请求,但模型始终为空。所以原始变量显示如下


{"Email":"test@gmail.com","Password":"Test@123","ConfirmPassword":"Test@123"}


但是当我尝试使用 Postman 发送 http 请求时,它起作用了。为模型绑定读取请求正文。原始变量为空。我不知道我的客户有什么问题。我完全遵循教程代码。我应该指定内容类型吗?


哔哔one
浏览 342回答 2
2回答

慕运维8079593

使变量名称相同,即在Register方法更改var Result为var model并尝试。应该是frombody,即从帖子正文中获取参数值[HttpPost] public&nbsp;async&nbsp;Task<IHttpActionResult>&nbsp;Register([FromBody]RegisterBindingModel&nbsp;model)
随时随地看视频慕课网APP
我要回答