Есть ли ограничение на длину скрытого поля в ASP.net?
Я испытываю странную ошибку (не очень странную, я думаю, это из-за некоторого ограничения максимальной длины, о котором я, возможно, не знаю). Я работаю над пользовательским серверным элементом управления, который предоставляет службу пользовательского поиска для сотрудников. После успешного поиска сотрудников я извлекаю их целые объекты (Список) из службы WCF в json, сохраняю строку в скрытом поле и отправляю обратно код, чтобы извлечь строку json и десериализовать в объекты. Теперь, до 2000 объектов, он работал безупречно, но когда критерии поиска начали загружаться выше 2000, появилась следующая ошибка
Uncaught Sys.WebForms.PageRequestManagerServerErrorException: Sys.WebForms.PageRequestManagerServerErrorException: An unknown error occurred while processing the request on the server. The status code returned from the server was: 0
Я также отлаживал код, но код C# даже не перехватывал никаких вызовов. Я также попытался сохранить строки json объектов в нескольких скрытых полях, каждая из которых имела 1000 записей в строке json. Но все же ошибка продолжает появляться. Это говорит мне, что есть какое-то ограничение максимального размера формы. Могу ли я получить какое-либо решение для этой проблемы, или я должен идти с отправкой идентификаторов к коду позади и получения объектов из службы там? На самом деле, URL службы должен быть динамическим, хост-приложение будет его предоставлять, поэтому я стараюсь не вводить привязку службы на уровне C# (я думаю, вы поняли).
2 ответа
ASP.NET имеет максимальный размер запроса - это 4 МБ по умолчанию, согласно документации. Если вы считаете, что можете достичь этого предела, вы можете увеличить его, добавив следующее в файл web.config внутри <system.web>
тег:
<httpRuntime maxRequestLength="x">
где х желаемый максимум в килобайтах. Так, например, 10240 будет 10 МБ.
Я столкнулся с этой проблемой, когда передавал туда и обратно большой объем данных для отображения - я терял данные после того, как они стали слишком большими. Я сделал некоторые изменения в web.config:
<appSettings>
<add key="aspnet:MaxHttpCollectionKeys" value="5000" />
<add key="aspnet:MaxJsonDeserializerMembers" value="5000" />
</appSettings>