【问题标题】:Web API 2 Json output getting truncatedWeb API 2 Json 输出被截断
【发布时间】:2019-03-07 15:59:34
【问题描述】:

我有以下控制器来获取 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。

知道为什么控制器会随机截断它。完全糊涂了。

【问题讨论】:

  • Webapi 有一个默认的最大请求大小。它会自动截断大于此值的消息并为您提供无效的 JSON。你可以增加这个(你是使用全脂 .NET 还是 .NET 核心?)

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


【解决方案1】:

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

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

除此之外,我更愿意使用DtoRto 来命名操作在您的Web API 中返回的对象。 ViewModels 对象与纯 ASP.NET MVC 架构更相关,对于 Web API,客户端可以通过多种不同方式使用您的端点。

【讨论】:

    【解决方案2】:

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

    例如,在 .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>
    

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2020-05-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-08-14
        • 1970-01-01
        • 2011-05-30
        • 1970-01-01
        相关资源
        最近更新 更多