c# – 如何从Web API中的HttpResponseMessage获取异常?

c# – 如何从Web API中的HttpResponseMessage获取异常?,第1张

概述我正在尝试在Web API中实现自定义错误处理, 我需要从返回的HttpResponseMessage中获取异常. 我试过通过以下方式获取异常信息: response.Content.ReadAsAsync<HttpError>().Result 但我无法访问结果对象,我在尝试时遇到异常, 所以我显然做错了. 无法弄清楚怎么做, 将不胜感激. 编辑: 我的客户端代码不相关,它只是一个GET请求,服 我正在尝试在Web API中实现自定义错误处理,
我需要从返回的httpResponseMessage中获取异常.

我试过通过以下方式获取异常信息:

response.Content.ReadAsAsync<httpError>().Result

但我无法访问结果对象,我在尝试时遇到异常,
所以我显然做错了.

无法弄清楚怎么做,
将不胜感激.

编辑:

我的客户端代码不相关,它只是一个GET请求,服务器代码:

控制器 *** 作抛出异常:

if (condition == true){    var response = new httpResponseMessage(httpStatusCode.BadRequest)    {        Content = new StringContent("Some Exception Related Message"),ReasonPhrase = "Some More Info"    };    throw new httpResponseException(response);}

我实现的DelegatingHandler的SendAsync方法得到响应,
这就是我想要获取上面控制器 *** 作中抛出的异常的callstack的地方.

errorDetails = new ResponseErrorDetailsFull{    Message = "An error has occurred.",ExceptionMessage = response.ReasonPhrase,StackTrace = response.Content.ReadAsAsync<httpError>().Result.StackTrace };

编辑#2

好的,所以我发现如果我创建一个ExceptionFilterattribute和OverrIDe OnException(),请使用我的DelegatingHandler上的属性,我可以访问上面代码中提到的异常.

有人可以解释为什么这样做?

解决方法 要在响应内容中获取httpError,您的服务器端API代码需要在响应流中编写httpError实例.

只有那时response.Content.ReadAsAsync< httpError>().结果将产生该数据.

通常,如果服务器端代码抛出异常,则默认行为是http 500(内部服务器错误)状态代码,在响应消息中没有任何可解析的代码.

在http 400(错误请求)或其他此类非500(非200)错误的情况下,通常发送回响应数据. (验证错误等)
在这种情况下,您可以从响应中读取数据.

通常,对于任何错误情况,除非您的服务器端API代码没有在响应中写入已知类型,否则您无法从调用者端的响应中读取它.

请发布您的服务器端和客户端代码,以便我们为您提供进一步的帮助.

总结

以上是内存溢出为你收集整理的c# – 如何从Web API中的HttpResponseMessage获取异常?全部内容,希望文章能够帮你解决c# – 如何从Web API中的HttpResponseMessage获取异常?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1231353.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-06
下一篇2022-06-06

发表评论

登录后才能评论

评论列表(0条)

    保存