我的API调用遇到一个非常奇怪的间歇性问题。有时响应被截断。
格式化程序配置:
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次请求。
您遇到这样的问题吗?我应该在哪里寻找导致此问题的潜在问题?
问题出在我们其中一个响应拦截的中间件。