C# WebClient UploadData未在403上引发

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

我尝试使用以下代码调用.NET Core API:

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);