【问题标题】:JsonConvert does not serialize all useful properties of an exceptionJsonConvert 不会序列化异常的所有有用属性
【发布时间】:2021-04-26 02:13:21
【问题描述】:

我在媒体编码过程中遇到以下异常:

catch (Microsoft.Azure.Management.Media.Models.ApiErrorException e)
{
    var str1 = e.ToString();
    var str2 = JsonConvert.SerializeObject(e);
}

我注意到,在两个字符串中,ApiErrorException 的某些属性都没有被捕获。例如,Body 类型为 Microsoft.Azure.Management.Media.Models.ApiError 不存在。

这是str2 的示例输出:

{
   "ClassName":"Microsoft.Azure.Management.Media.Models.ApiErrorException",
   "Message":"Operation returned an invalid status code 'BadRequest'",
   "Data":null,
   "InnerException":null,
   "HelpURL":null,
   "StackTraceString":"   at Microsoft.Azure.Management.Media.JobsOperations.CreateWithHttpMessagesAsync(String resourceGroupName, String accountName, String transformName, String jobName, Job parameters, Dictionary`2 customHeaders, CancellationToken cancellationToken)\r\n   at Microsoft.Azure.Management.Media.JobsOperationsExtensions.CreateAsync(IJobsOperations operations, String resourceGroupName, String accountName, String transformName, String jobName, Job parameters, CancellationToken cancellationToken)\r\n   at ConsoleApp2.ProgramS.Main(String[] args) in C:\\Users\\xyz\\source\\repos\\ConsoleApp2\\ConsoleApp2\\ProgramS.cs:line 59",
   "RemoteStackTraceString":null,
   "RemoteStackIndex":0,
   "ExceptionMethod":null,
   "HResult":-2146233088,
   "Source":"Microsoft.Azure.Management.Media",
   "WatsonBuckets":null
}

不幸的是,这不是很有帮助,因为BadRequest 可以出于任何原因抛出。我需要的是Body 中的消息以及Microsoft.Rest.HttpResponseMessageWrapper 类型的Response 属性的序列化。

我的印象是JsonConvert 会序列化所有内容,但显然不是这样。所以,自然的问题是,我如何让它序列化它们?另外,我已经实现了全局异常处理,现在我质疑这个问题是否存在于我使用各种其他 Nuget 包的其他地方。是否可以从JsonConvert 获得更详细的异常转储?

【问题讨论】:

    标签: c# exception serialization azure-media-services jsonconvert


    【解决方案1】:

    我们正在调查造成这种情况的原因,但我们能够通过提交一个很长且包含特殊字符的资产名称来重现它。这可能与您看到的问题相同吗?您可以使用更简单的资产名称再次尝试您的代码吗?

    如果您可以分享所使用的资产名称,那也会有所帮助。

    【讨论】:

    • 另外 - 您可以通过 Azure 门户提交故障单,其中包含您的订阅 ID、帐户名称和您使用失败的资产名称。然后,我们的支持团队可以将详细信息发送给我们。
    • 嗨。我还没有生产,所以现在需要提交一张票。我通过多种方式创建了异常:尝试删除当前处于处理状态的作业、指定已被另一个资产使用的存储容器名称、指定正在删除的容器等。
    • 似乎序列化程序忽略了ApiErrorException 的所有直接属性(正文、请求、响应)。
    • 感谢您提供详细信息 - 我将继续与团队核实。如果您能够进入门户并提交支持请求,请这样做 - 更好地用于跟踪目的并在问题解决后关闭问题。
    猜你喜欢
    • 2012-01-08
    • 1970-01-01
    • 1970-01-01
    • 2021-05-26
    • 2020-06-21
    • 1970-01-01
    • 1970-01-01
    • 2016-01-02
    • 2010-09-25
    相关资源
    最近更新 更多