首页 > 解决方案 > ASP.NET web api 2 截断 json 响应

问题描述

我的 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 响应字符串是在随机位置剪切的。MalformedJsonException当响应像这样时,我们的 android 应用程序会失败。对于同一数据集,它会像 5-10 次请求一样发生一次。

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

标签: c#asp.netjsonjson.netasp.net-web-api2

解决方案


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


推荐阅读