【发布时间】: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