c# – 如何从Web API中的HttpResponseMessage获取异常?
我正在尝试在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方法得到响应, 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代码没有在响应中写入已知类型,否则您无法从调用者端的响应中读取它. 请发布您的服务器端和客户端代码,以便我们为您提供进一步的帮助. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |