JsonConvert 不会序列化异常的所有有用属性

问题描述

我在媒体编码期间捕捉到以下异常:

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,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 中的消息以及 Response 类型的 Microsoft.Rest.HttpResponseMessageWrapper 属性的序列化。

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

解决方法

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

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

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...