从 Dapr InvocationException 获取原始异常

Get original exception from Dapr InvocationException

提问人:Steve 提问时间:8/22/2023 更新时间:8/25/2023 访问量:51

问:

我在 .Net 微服务环境中使用 Dapr 在不同服务之间进行通信。我遇到了被调用服务抛出异常(可能是出于任何原因)的情况,但调用服务只看到它作为 Dapr InvocationException 返回,这似乎隐藏了原始异常。

enter image description here

我可以通过调用来获取请求正文,该请求正文确实返回原始异常消息,但也返回整个堆栈跟踪和标头。enter image description here有没有办法在捕获 InvocationException 后获取原始异常对象(即 等)?Response.Content.ReadAsStringAsyncInvalidOperationExceptionArgumentException

C# .NET 异常 DAPR

评论

0赞 Panagiotis Kanavos 8/25/2023
also the entire stack trace and headers.这是实际的例外,而且比消息更有用。特别是在这种情况下,它清楚地告诉你细节在内部异常中
0赞 Panagiotis Kanavos 8/25/2023
事实上,如果您只在 SO 问题中发布消息,人们会告诉您发布全文,因为这不仅显示了任何内部异常,还显示了导致该异常的调用,并可以帮助您找到哪种应用程序方法导致了服务或 .NET 堆栈深处的错误

答:

0赞 akakarikos 8/25/2023 #1

文档没有说明任何内容,所以我不知道这是否受支持。对我来说,你说的,它不能使用 Dapr .NET SDK。始终为空。Response.Content

我尝试使用 .但它似乎是一个,并且它不包含有关目标服务中抛出的原始异常的任何信息。InnerExceptionInvocationExceptionHttRequestException

评论

2赞 Panagiotis Kanavos 8/25/2023
API 返回内部异常。这是一条基本的安全规则
0赞 akakarikos 8/28/2023
谢谢@PanagiotisKanavos。所以这意味着,在这种情况下,要获得内部异常,要想获得内部异常,就要使用普通的HTTP调用,而不是使用Dapr .NET API,对吗?