为了账号安全,请及时绑定邮箱和手机立即绑定

Web API 2 Json 输出被截断

Web API 2 Json 输出被截断

C#
万千封印 2022-10-15 15:09:40
我有以下控制器来获取 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 回答

?
精慕HU

TA贡献1845条经验 获得超8个赞

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

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

除了苍白之外,我更愿意使用DtoRto命名在您的 Web API 中返回的操作的对象。ViewModels 对象与纯 ASP.NET MVC 体系结构更相关,在 Web API 的情况下,客户端可以使用多种不同的方式使用您的端点。


查看完整回答
反对 回复 2022-10-15
?
holdtom

TA贡献1805条经验 获得超10个赞

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>


查看完整回答
反对 回复 2022-10-15
?
绝地无双

TA贡献1946条经验 获得超4个赞

感谢你的帮助。这一行是 web.config 是真正的罪魁祸首,它启用了 http 日志记录。我将 http logging 设置为 false 并且它可以工作 add key="ENABLE_HTTP_LOGGING" value="true" 将其设置为 false 并且一切正常。



查看完整回答
反对 回复 2022-10-15
  • 3 回答
  • 0 关注
  • 440 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号