【问题标题】:ASP.NET web api 2 truncating json responseASP.NET web api 2 截断 json 响应
【发布时间】:2020-05-03 16:14:57
【问题描述】:

我的 API 调用遇到了一个非常奇怪的间歇性问题。有时响应会被截断

  • 没有关于如何或何时截断它的模式。
  • 响应大小为 200kb,配置的响应限制为 20mb。

格式化程序配置:

private static HttpConfiguration ConfigureFormatters(this HttpConfiguration config)
{
    config.Formatters.Clear();
    config.Formatters.Add(new JsonMediaTypeFormatter());
    config.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();

    return config;
}

简化的 API 调用:

[HttpGet, Route]
public IHttpActionResult Explore(int cityId)
{
    var lists = exploreBuilderService.Build(cityId);
    return Ok(lists);
}

lists 类型为List<SomeModel>SomeModelDTO,没有循环引用。

示例响应:

Response Headers
Content-Type: application/json; charset=utf-8
Server: Microsoft-IIS/10.0
X-Powered-By: ASP.NET
Date: Fri, 17 Jan 2020 12:02:37 GMT
Content-Length: 290248

Data
[..., {"id":47

... 是数组中的其他对象。 看起来 json 响应字符串是在随机位置剪切的。当响应像这样时,我们的 android 应用程序失败并显示 MalformedJsonException。对于同一数据集,它会在 5-10 次请求中发生一次。

你遇到过这样的问题吗?我应该在哪里寻找导致此问题的潜在问题?

【问题讨论】:

  • 您是如何检测到响应被截断的?您可以包含示例响应和截断响应吗?
  • @Ajith 我用示例回复编辑了一个问题
  • 您没有使用 .net 核心 Web API。对吗?
  • 正确,它是 asp.net web api 2, .net 4.7.2
  • 你有什么样的设置。您使用的是哪个服务器以及哪个操作系统?

标签: c# asp.net json json.net asp.net-web-api2


【解决方案1】:

问题在于我们的一个中间件进行了响应拦截。

【讨论】:

    猜你喜欢
    • 2018-08-27
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 2012-11-16
    • 1970-01-01
    相关资源
    最近更新 更多