我正在使用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/