【问题标题】:JSON String gets cut off [duplicate]JSON字符串被切断[重复]
【发布时间】:2017-08-07 20:44:32
【问题描述】:

我的应用程序是 ASP.NET Core 1.0 Web API。

如果我的控制器返回一个小的 JSON,那么一切正常。 但是,如果 JSON 变大,我会得到这个 error

Visual Studio 给了我这个error

这是创建数据的控制器和方法(缩短)

  [HttpGet]
  public async Task<IActionResult> GetUserData()
  {        
        return this.Ok(GetSomeData());
  }

   private List<MyUser> GetSomeData()
   {
       var userList = new List<MyUser>();
       for (int i = 0; i < 2500; i++)
       {
            userList.Add(new MyUser{
                Name = "Data",
                Age = i,
                Phone = "000",
            });
       }
       return userList;
   }

如果循环变大,我会收到上面列出的错误。

请记住,代码非常简化。但一切正常,直到返回大量数据。

我已尝试更改web.config 中的maxJsonLength,正如here 所述。

【问题讨论】:

  • 有兴趣的朋友,我的问题在this帖子中得到了解答。

标签: c# json asp.net-core asp.net-core-mvc


【解决方案1】:

我的问题是我的中间件会很快抛出异常并关闭响应

【讨论】:

    【解决方案2】:

    请看,使用 web api 和 json,您可以传输的数据量是有限的。但一种奇怪的方法可能是返回一个序列化为 json 的文本/纯文本数据。

    因此,如果您将 GetUserData() 操作更改为这样:

    [HttpGet]
    public async Task<HttpResponseMessage> GetUserData()
    {     
       var result = GetSomeData();
       var response = Request.CreateResponse();
       response.Content = new StringContent(JsonConvert.SerializeObject(result));
       return response;
    }
    

    然后在您的客户端中,您可以使用JsonConvert.DeserializeObject 方法构造您的对象。

    【讨论】:

    • 感谢您的回答。这对我不起作用..当我尝试获取包“Microsoft.AspNet.WebApi.Core”时,我收到错误消息,它与“netcoreapp1.0”不兼容。因此我没有方法 CreateResponse();您还有其他建议吗?
    • 我找到了一种解决方法来获取 Response 对象 link 我将使用 HttpResponseMessage result = new HttpResponseMessage(HttpStatusCode.Gone) 而不是 Request.CreateResponse() 但这对我不起作用..
    猜你喜欢
    • 1970-01-01
    • 2018-10-15
    • 2019-06-16
    • 1970-01-01
    • 1970-01-01
    • 2017-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多