我有一个 webapi 后端和一个使用它的客户端。如果后端抛出异常,它会被序列化为 HttpError。我完全按照这里的教程:
http://www.asp.net/web-api/overview/web-api-routing-and-actions/exception-handling
在客户端,我可以反序列化 HttpError 并使用“JsonConvert.DeserializeObjectAsync(myContentString)”读取包含的所有值 - 这一切正常。
现在我的第一个问题是:如何在客户端重新抛出异常?没有像HttpError.Throw()这样的方法吗?
因为我还没有找到类似的东西,所以我正在创建一个新的自定义异常并传入所有相关值,包括堆栈跟踪:
throw new MyException(myHttpError["Message"], myHttpError["StackTrace"]);
MyException 覆盖 StackTrace 并简单地返回字符串。这在普通的 mvc 控制器方法中工作正常,但在异步控制器方法中,标准的 ASP.NET 错误页面从上面显示堆栈跟踪到“throw...”行,而不是实际保存在异常中的堆栈跟踪!所以我的第二个问题是:如何在标准 ASP.NET 错误页面上显示我在自定义异常上设置的堆栈跟踪?