我有以下控制器来获取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。
任何想法,为什么控制器会随机截断它。完全莫名其妙。
答案 0 :(得分:1)
我认为您的问题与this问题有关
我认为您最糟糕的事情是返回数据包而不影响其大小,因此在这种情况下,您应该使用分页。
除了面无表情,我宁愿使用Dto
或Rto
来命名在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,一切正常。