我正在使用HttpClient发布到API,并重新获得HttpResponseMessage
我正在从回复中读取状态代码,但我始终是200

过帐:

var json = JsonConvert.SerializeObject(loginDto);
var stringContent = new StringContent(json, Encoding.UTF8, "application/json");
var client = new HttpClient();
var response = await client.PostAsync("http://localhost:57770/api/Account/Login", stringContent);


我从API答复HttpResponseMessage

return new HttpResponseMessage(HttpStatusCode.Unauthorized);


但是当我阅读response时,它总是200

我该如何实现?

最佳答案

Asp.Net Core不再将HttpResponseMessage识别为管道的一部分。这意味着它将像其他返回的模型一样对待并序列化为内容。因此为200 OK状态。

API控制器操作应返回IActionResult派生的结果。

[HttpPost]
public IActionResult SomeAction(...) {

    //...

    return StatusCode((int)HttpStatusCode.Unauthorized); //401

    //...
}


或者只是使用

return Unauthorized();


它是从StatusCodeResult派生的,可以用快捷方式替换上面显示的代码。

参考ControllerBase.Unauthorized

关于c# - 使用HttpClient发布并读取HttpResponseMessage状态,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52916397/

10-11 05:38