C# 当HttpWebRequest.GetResponse引发WebException时,如何读取返回的自定义错误消息?

C# 当HttpWebRequest.GetResponse引发WebException时,如何读取返回的自定义错误消息?,c#,.net-core,C#,.net Core,我有一个具有简单测试方法的NET.Core API: public async Task<IActionResult> TestApi() { try { throw new UnauthorizedAccessException("My custom error"); return Ok(); } catch (UnauthorizedAccessException ex) { return

我有一个具有简单测试方法的NET.Core API:

public async Task<IActionResult> TestApi()
{
    try
    {
        throw new UnauthorizedAccessException("My custom error");

        return Ok();
    }
    catch (UnauthorizedAccessException ex)
    {
        return StatusCode(401,ex.Message);
    }
    catch (Exception ex)
    {
        throw;
    }

}


而不是
我的自定义错误
。有人能给我指出正确的方向吗?

这里有一个简化的示例,可以阅读您的自定义消息。您的消息将在响应流中返回

try
{
    var response = request.GetResponse() as HttpWebResponse;
}
catch (WebException ex) // this exception is thrown because of the 401.
{
    var responseStream = ex.Response.GetResponseStream();
    using (var reader = new StreamReader(responseStream))
    {
        var message = reader.ReadToEnd();
    }
}

返回一个ActionResult

Task<ActionResult>

您是否查看了内部异常?内部异常为
null
,并且
Response
对象中没有其他信息。请查看
Response
属性。特别是,
Response.StatusDescription
。您看到的消息没有从API返回。您的API返回401,并且
GetResponse
抛出此默认消息的异常。该异常有一个
Response
属性,该属性包含有关响应的更多详细信息,包括该消息。您是否阅读过此帖子:?我读了很多帖子,但运气不佳。您建议的是MVC5。
try
{
    var response = request.GetResponse() as HttpWebResponse;
}
catch (WebException ex) // this exception is thrown because of the 401.
{
    var responseStream = ex.Response.GetResponseStream();
    using (var reader = new StreamReader(responseStream))
    {
        var message = reader.ReadToEnd();
    }
}
Task<ActionResult>
return Unauthorized(new UnauthorizedObjectResult(errorModel));