【问题标题】:How do I store the json string after a JsonReaderException?如何在 JsonReaderException 之后存储 json 字符串?
【发布时间】:2019-08-22 09:26:06
【问题描述】:

在服务层中,解析 JSON 字符串时,如果解析失败,则会向控制器抛出 JsonReaderException

JObject jData = new JObject();

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

在 Web 层的控制器中,在捕获该异常后,我想将该 JSON 字符串与异常消息一起存储在数据库中。

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

我可以在服务层执行此操作(我最初也是这样做的),但是,由于依赖注入,我必须向 _exceptionLogService 添加一个依赖项,然后在很多地方更改代码。如果可能的话,我正在寻找一种更简单、更快捷的方法来在 web 层中执行此操作。我该怎么做呢?

【问题讨论】:

  • 所以保存response.content!
  • 出现异常如何发送给控制器?
  • 你的控制器没有在你的代码中被提及,所以我不知道。如果您的代码的第二部分,请创建一个您自己的新异常,该异常接受 json 字符串的参数,以便您可以传递它
  • 我没想到。感谢您的建议。

标签: c# .net json model-view-controller


【解决方案1】:

您的代码中没有提到您的控制器,所以我不知道。如果 你的第二部分代码,做一个你自己的新例外 接受 json 字符串的参数,因此您可以将其传递 - 错误查找器 2 小时前

我通过创建一个自定义JsonParseException 解决了这个问题,该JsonReaderException 和一个字符串作为参数,并将其扔给控制器。很遗憾,我无法将评论标记为答案。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多