我有一个后端的WebAPI和客户消费它里面抛出的异常的堆栈跟踪。如果后端引发异常,它会被序列化为HttpError。我在这里充分以下教程:保留MVC异步控制器方法
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覆盖堆栈跟踪,只是返回的字符串。这在正常的MVC控制器的方法,但在异步控制器方法标准的ASP.NET错误页面工作正常,从上面并没有这实际上保持了异常中的堆栈跟踪显示堆栈跟踪到“抛......”行了!所以我的第二个问题是:如何显示我在标准ASP.NET错误页上的自定义异常上设置的堆栈跟踪?
你确定你覆盖'StackTrace'吗? “覆盖”关键字是否存在? –
看起来你会在页面代码的最后找到一个HTML注释的堆栈跟踪。我不知道为什么这样做。 – svick
@Daniel:是的...... – srudin