C# WebClient UploadData未在403上引发
我尝试使用以下代码调用.NET Core API:C# WebClient UploadData未在403上引发,c#,asp.net-core,C#,Asp.net Core,我尝试使用以下代码调用.NET Core API: using (var webClient = new WebClient()) { try { webClient.Headers.Add(HttpRequestHeader.ContentType, "application/json"); string json = JsonConvert.SerializeObject(updateLiveMapRequest); byte
using (var webClient = new WebClient())
{
try
{
webClient.Headers.Add(HttpRequestHeader.ContentType, "application/json");
string json = JsonConvert.SerializeObject(updateLiveMapRequest);
byte[] data = Encoding.UTF8.GetBytes(json);
await webClient.UploadDataTaskAsync("http://localhost:1778/api/upload/data", data);
}
catch (WebException ex)
{
Logger.Debug(ex);
throw;
}
}
在我的服务器I上,出于测试目的,只需返回禁止()
:
调用到达控制器,但是消费web客户端对得到403非常满意,并且不会像在BadRequest
上那样抛出异常
这是为什么?多亏了我的回答,我才明白这一点: 当您想从API中使用HTTP 403状态代码进行响应时 不希望ASP.NET核心身份验证逻辑执行任何 重定向或其他操作,请使用: 这将实现以下目的:
return StatusCode((int)HttpStatusCode.Forbidden);
我想,使用不推荐的
WebClient
而不是首选的HttpClient
习惯的原因是什么。不知道有一个新的首选:)HttpClient
有一个issucessstatuscode
属性,对于任何非2XX
状态,该属性返回false<代码>确保成功状态代码将基于IsSuccessStatusCode
引发异常。好的,将进行旋转。谢谢你的提醒!
return StatusCode((int)HttpStatusCode.Forbidden);