【发布时间】: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>。 SomeModel 是 DTO,没有循环引用。
示例响应:
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