Как сохранить строку json после исключения JsonReaderException? - PullRequest
0 голосов
/ 01 апреля 2019

На уровне службы, при синтаксическом анализе строки JSON, если при синтаксическом анализе происходит сбой, JsonReaderException передается в контроллер.

JObject jData = new JObject();

try
{
    jData = JObject.Parse(response.Content);
}
catch (JsonReaderException ex)
{
    throw ex;
}

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

catch(JsonReaderException ex)
{
    _exceptionLogService.LogException(new ExceptionLog()
    {
        Date = DateTime.Now,
        Message = ex.Message,
        Content = "json string (response.Content) goes here"    
   }
}

Я мог бы сделать это на уровне сервиса (и именно так я и делал изначально), однако из-за внедрения зависимости мне пришлось бы добавить зависимость к _exceptionLogService, а затем изменить код во многих местах. Я ищу более простой способ сделать это в веб-слое, если это возможно. Как мне это сделать?

1 Ответ

0 голосов
/ 01 апреля 2019

Ваш контроллер не упоминается в вашем коде, так что я понятия не имею.Если ваша вторая часть кода, создайте новое собственное исключение, которое принимает параметр для строки json, чтобы вы могли передать его - BugFinder 2 часа назад

Я решил эту проблему, создавcustom JsonParseException, который принимает JsonReaderException и строку в качестве параметров и отправляет их в контроллер.К сожалению, я не могу пометить комментарий как ответ.

JObject jData = new JObject();
try
{
    jData = JObject.Parse(response.Content);
}
catch (JsonReaderException ex)
{
    throw new JsonParseException(ex, response.Content);;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...