Web API 2 Json输出被截断

时间:2019-03-07 15:59:35

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

我有以下控制器来获取JSON数据

    [HttpPost]
    [Route("Clients/Active")]
    public IHttpActionResult SearchClient(ClientSearchParams p)
    {
        List<ClientViewModel> _result = PeopleComponent.SearchClient(p).ToList();
        return Ok<IEnumerable<ClientViewModel>>(_result);

    }

适用于较小的数据(几千行),并返回全格式的JSON,但是当数据稍大时,响应有时会被截断,但结果为200 OK。

任何想法,为什么控制器会随机截断它。完全莫名其妙。

3 个答案:

答案 0 :(得分:1)

我认为您的问题与this问题有关

我认为您最糟糕的事情是返回数据包而不影响其大小,因此在这种情况下,您应该使用分页。

除了面无表情,我宁愿使用DtoRto来命名在Web API中返回操作的对象。 ViewModel的对象与纯ASP.NET MVC架构更相关,并且在使用Web API的情况下,客户端可以通过多种不同方式使用端点。

答案 1 :(得分:0)

Webapi具有默认的最大请求大小。它将自动截断大于此值的消息,并为您提供无效的JSON。根据您的.NET Core版本,您可以增加此-

例如,在.NET 4.5中,您可以编辑Web.Config以包含以下内容:

<system.web>
<authentication mode="None" />
<customErrors mode="Off" />
<compilation debug="true" targetFramework="4.5.2" />
<httpRuntime targetFramework="4.5.2" maxRequestLength="100000"/>
</system.web>

答案 2 :(得分:0)

感谢您的帮助。 这行是web.config是启用HTTP日志记录的真正罪魁祸首。我将http日志记录设置为false,并且可以正常工作 添加key =“ ENABLE_HTTP_LOGGING” value =“ true” 将其设置为false,一切正常。