C# 当HttpWebRequest.GetResponse引发WebException时,如何读取返回的自定义错误消息?
我有一个具有简单测试方法的NET.Core API: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
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));