Получение 400 неверных запросов при отправке больших данных JSON в службу WCF ReST - PullRequest
1 голос
/ 27 июня 2011

Я сделал все правильные настройки в службе, но все равно получаю тот же глупый 400 Bad Request, когда я пытаюсь передать большие объемы данных JSON в мою службу REST WCF. Ниже мой сервис Web.config. Я борюсь с этим уже 3 недели и не нашел ответа. Это исключительная деталь из ответа:

"Произошла ошибка при десериализации объект типа BuildStepResource. максимальная квота длины содержимого строки (8192) было превышено при чтении Данные XML. Эта квота может быть увеличена изменяя MaxStringContentLength собственность на Используемый объект XmlDictionaryReaderQuotas при создании программы чтения XML. "

<system.serviceModel>
        <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true"/>
        <bindings>
            <webHttpBinding>
                <binding name="nonSSLBinding" maxReceivedMessageSize="4194304" receiveTimeout="01:00:00" sendTimeout="01:00:00" >
                    <security mode="None">
                        <transport clientCredentialType="Ntlm"/>
                    </security>
                    <readerQuotas maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxDepth="2147483647" maxNameTableCharCount="2147483647" maxStringContentLength="2147483647"/>
                </binding>
                <binding name="sslBinding" maxReceivedMessageSize="4194304" receiveTimeout="01:00:00" sendTimeout="01:00:00" >
                    <security mode="Transport">
                        <transport clientCredentialType="Basic"/>
                    </security>
                    <readerQuotas maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxDepth="2147483647" maxNameTableCharCount="2147483647" maxStringContentLength="2147483647"/>
                </binding>
            </webHttpBinding>
        </bindings>
        <services>
            <service behaviorConfiguration="webBehavior" name="serviceEndpoints">
                <endpoint address="" binding="webHttpBinding" contract="ISWCRestService" bindingConfiguration="nonSSLBinding" behaviorConfiguration="customBehavior"/>
                <endpoint address="" binding="webHttpBinding" contract="ISWCRestService" bindingConfiguration="sslBinding" behaviorConfiguration="customBehavior"/>
                <endpoint address="" binding="webHttpBinding" contract="IXmlEndpoint" bindingConfiguration="nonSSLBinding" behaviorConfiguration="customBehavior"/>
                <endpoint address="" binding="webHttpBinding" contract="IXmlEndpoint" bindingConfiguration="sslBinding" behaviorConfiguration="customBehavior"/>
                <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
            </service>
        </services>
        <behaviors>
            <serviceBehaviors>
                <behavior name="webBehavior">
                    <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>
                    <serviceDebug includeExceptionDetailInFaults="true"/>
                    <dataContractSerializer maxItemsInObjectGraph="2147483646" />
                </behavior>
            </serviceBehaviors>
            <endpointBehaviors>
                <behavior name="customBehavior">
                    <webHttp automaticFormatSelectionEnabled="false" helpEnabled="true"/>
                    <dataContractSerializer maxItemsInObjectGraph="2147483646" />
                </behavior>
            </endpointBehaviors>
        </behaviors>
    </system.serviceModel>

Ответы [ 4 ]

1 голос
/ 27 июня 2011

Сообщение об ошибке относится к превышению квоты при чтении , что заставляет меня поверить, что вам нужно увеличить свойство MaxStringContentLength на стороне клиента , за исключением вашего web.config .

0 голосов
/ 02 сентября 2011

Попробуйте это в вашем web.config:

    <system.web>
        <compilation debug="true" targetFramework="4.0" />
        <httpRuntime maxRequestLength="2147483647"/>
    </system.web>
0 голосов
/ 28 июня 2011

Конфигурация на стороне клиента -

<binding name="yourBinding"  maxReceivedMessageSize="2147483647">
          <readerQuotas
            maxDepth="2147483647"
            maxStringContentLength="2147483647"
            maxArrayLength="2147483647"
            maxBytesPerRead="2147483647"
            maxNameTableCharCount="2147483647" />
</binding>
0 голосов
/ 27 июня 2011

У меня была похожая проблема с клиентом WCF.Вы должны настроить MaxItemsInObjectGraph, чтобы он был больше на вашем клиенте и на вашем сервере.Я не знаю, как это сделать в JSON.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...