JsonConvert не сериализует все полезные свойства исключения

#c# #exception #serialization #azure-media-services #jsonconvert

#c# #исключение #сериализация #azure-media-services #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)rn   at Microsoft.Azure.Management.Media.JobsOperationsExtensions.CreateAsync(IJobsOperations operations, String resourceGroupName, String accountName, String transformName, String jobName, Job parameters, CancellationToken cancellationToken)rn   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
}
 

К сожалению, это не очень полезно, потому что a BadRequest может быть выдано по любой причине. Что мне нужно, так это сообщение, Body а также сериализация Response свойства type Microsoft.Rest.HttpResponseMessageWrapper .

У меня сложилось впечатление, что JsonConvert это сериализует все, что явно не так. Итак, естественный вопрос в том, как мне заставить его сериализовать их? Кроме того, у меня реализована глобальная обработка исключений, и теперь я задаюсь вопросом, существует ли эта проблема в других местах, где я использую различные другие пакеты Nuget. Можно ли получить более подробный дамп исключения из JsonConvert ?

Ответ №1:

Мы изучаем причину этого, но мы смогли воспроизвести ее, отправив очень длинное имя ресурса, содержащее специальные символы. Возможно, это та же самая проблема, которую вы видите? Можете ли вы еще раз попробовать свой код с более простым именем ресурса?

Если вы можете поделиться используемым именем ресурса, это также поможет.

Комментарии:

1. Кроме того, вы можете подать заявку через портал Azure с вашим идентификатором подписки, именем учетной записи и именами активов, которые вы использовали, что не удалось. Затем наша служба поддержки может направить нам подробную информацию.

2. Привет. Я еще не в рабочей среде, поэтому пока нужно подать заявку. Я создал исключение несколькими способами: пытаясь удалить задание, которое в данный момент находится в состоянии обработки, указав имя контейнера хранения, которое уже используется другим ресурсом, указав контейнер, который удаляется, и т.д.

3. Кажется, сериализатор игнорирует все прямые свойства (тело, запрос, ответ) ApiErrorException .

4. Спасибо за подробности — я продолжу уточнять у команды. Если вы можете зайти на портал и отправить запрос в службу поддержки, пожалуйста, сделайте это — лучше для целей отслеживания и закрытия проблемы, как только она будет решена.