Я вызываю свою веб-службу WCF, используя jQuery $ .ajax json POST.
Один из входных параметров - очень длинный - более 8000 байт. Данные в нем представляют собой список GUID, разделенных запятыми, например: 78dace54-1eea-4b31-8a43-dcd01e172d14, ce485e64-e7c6-481c-a424-2624371180aa, ede4c606-f743-4e0a-a -59bcffa7feda, f0a81ed1-80db-4f6d-92d7-2fc47759a409 ".
Если этот параметр имеет длину 8176 байт , запрос завершается успешно . Когда он 8213 (еще одна запятая и GUID) - запрос не выполняется .
Он не выполняется из браузера и из Fiddler (прокси-сервер отладки HTTP).
Я добавил это в конфигурацию веб-сервиса:
<configuration>
<system.web.extensions>
<scripting>
<webServices>
<jsonSerialization maxJsonLength="50000000" recursionLimit="50000"/>
</webServices>
</scripting>
</system.web.extensions>
Это не имеет значения, запрос по-прежнему не выполняется для входных параметров длиной более 8176 байт.
Этот входной параметр отображается в String на стороне WCF.
Что мне не хватает? Спасибо!
ОБНОВЛЕНИЕ, это решило мою проблему: Оказывается, этот параметр контролирует общую длину сообщения JSON.
<webServices>
<jsonSerialization maxJsonLength="50000000" recursionLimit="50000"/>
</webServices>
Есть еще один параметр, который контролирует максимальную длину для отдельных параметров:
<bindings>
<webHttpBinding>
<binding name="Binding_Name" maxReceivedMessageSize="900000">
<readerQuotas maxDepth="32" maxStringContentLength="900000" maxBytesPerRead="900000" maxArrayLength="120000" maxNameTableCharCount="120000"/>
</binding>
</webHttpBinding>
</bindings>
Также не забудьте установить это:
<system.web>
<httpRuntime maxRequestLength="900000"/>
Надеюсь, это решит некоторые проблемы!