При вызове службы WCF из Silverlight, которая работает для более мелких параметров, но не работает для более крупных (с ответом «400: Bad Request»), как настроить сервер для приема большего числа параметров?
Длинная версия: я пытаюсь вызвать службу WCF из Silverlight, и я передаю Список гидов, который содержит 2000 гидов.Служебный вызов работает до 1100 (точно), но все, что прошло, приведет к ошибке.Я посмотрел на ответ с Fiddler, и я получаю код ответа 400 (Bad Request).Я считаю, что это настраиваемый параметр, но я не уверен, какой параметр нужно изменить.Я не уверен на 100%, что мои настройки файла конфигурации применяются так, как я намереваюсь, поскольку я не знаю, как программно проверить, используются ли эти настройки.Однако я попытался установить maxRequestLength, maxQuestyStringLength и maxUrlLength элемента httpRuntime в system.web на чрезвычайно высокие значения без изменений.Я установил maxReceivedMessageSize, maxBufferPoolSize и maxBufferSize элемента httpTransport пользовательской привязки к высоким значениям без эффекта.Я установил maxDepth, maxArrayLength, maxBytesPerRead, maxNameTableCharCount и maxStringContentLength элемента readerQuota элемента basicHttpBinding также без эффекта.
Если это пока не очевидно, я беру случайные удары в темноте на основаниирекомендации из нескольких мест онлайн, но ничего не дало никакого эффекта.Если кто-то точно знает, какой атрибут мне следует установить, чтобы я мог попробовать еще раз, я был бы очень признателен за некоторые знающие советы.Также было бы особенно полезно, если бы у кого-то был совет о том, как я могу программно проверить, какие настройки используются из моего файла конфигурации, что, по крайней мере, позволило бы мне подтвердить, что то, что я уже пробовал, применяется так, как я думаю,are.
ОБНОВЛЕНИЕ: Если взглянуть на ситуацию немного ближе, моя проблема очень похожа на описанную в Сбой запроса большого веб-сервиса WCF с (400) HTTP Bad Request .Я не верил, что это будет той же проблемой, потому что я установил maxReceivedMessageSize, как описано в решении, и это не решило проблему.Тем не менее, я думаю, что мой web.config не применяется правильно, потому что я только что проверил размер сообщения в fiddler, и последний успешный вызов (1100 Guids) приводит к тому, что размер сообщения составляет 65481, и первый неудачный запрос происходит сразмер сообщения 65540. Таким образом, значение по умолчанию превышает 65536.
Вот мой текущий раздел web.config serviceModel:
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="basicHttpBinding" closeTimeout="01:00:00"
openTimeout="01:00:00" receiveTimeout="01:00:00"
sendTimeout="01:00:00" maxBufferPoolSize="2147483647"
maxBufferSize="2147483647" maxReceivedMessageSize="2147483647">
<readerQuotas maxDepth="2147483647"
maxStringContentLength="2147483647"
maxArrayLength="2147483647" />
</binding>
</basicHttpBinding>
</bindings>
<services>
<service behaviorConfiguration="ReportDataServiceBehavior"
name="DSTM.Reporting.ReportDataService">
<endpoint address="" binding="basicHttpBinding"
contract="DSTM.Reporting.IReportDataService" />
<endpoint address="mex" binding="mexHttpBinding"
contract="IMetadataExchange" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="ReportDataServiceBehavior">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
<dataContractSerializer maxItemsInObjectGraph="2147483647" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
Как я могу убедиться, что моя служба использует привязкучто я ожидаю?