【问题标题】:Different value when processing POST request in ASP.NET WEB API在 ASP.NET WEB API 中处理 POST 请求时的不同值
【发布时间】:2018-10-26 12:01:45
【问题描述】:

我有一个我以前从未见过的情况。我正在使用下面的代码来声明一个 Post 操作。

[HttpPost]
[Route("")]
public async Task<HttpResponseMessage> Insert(InsertRequest request)
{
     var body = await Request.Content.ReadAsStringAsync();
}

现在,当我使用带有 Content-Type = Application/Json 的 Postman 向此端点发送请求时,我得到一些请求值和空字符串作为正文。

如果我对这个端点使用 HttpClient 执行 PostAsJsonAsync,我将得到 null 的请求和请求正文的内容。

这怎么可能?

【问题讨论】:

    标签: asp.net asp.net-web-api asp.net-web-api2 dotnet-httpclient


    【解决方案1】:

    要支持POST,您需要在请求参数中添加属性[FromBody]

    [HttpPost]
    [Route("")]
    public async Task<HttpResponseMessage> Insert([FromBody] InsertRequest request)
    {
        var body = await Request.Content.ReadAsStringAsync();
    }
    

    【讨论】:

    • 其实我之前有[FromBody]没有试过,结果是一样的。所以这没有用。
    • 您确定在邮递员中请求 POST 吗?也有可能出现,你的请求格式无效,asp.net mvc不能互相翻译
    • 100% 确定。如果格式是问题,为什么 Postman 和 PostAsJsonAsync() 发出的请求之间的 Request.Content.ReadAsStringAsync() 不同?
    • 我已经使 InsertRequest 类尽可能简单,并且从 PostAsJsonAsync 调用此操作始终将 null 值作为参数传递。这对我来说是个大问题
    • 能贴出HttpClient和PostAsJsonAsync相关的代码吗?
    猜你喜欢
    • 1970-01-01
    • 2020-07-06
    • 2019-08-02
    • 1970-01-01
    • 1970-01-01
    • 2020-07-20
    • 1970-01-01
    • 2016-05-12
    • 2018-07-01
    相关资源
    最近更新 更多