Максимальная глубина проблемой при отправке объектов в службе WCF
Я получаю приведенное ниже исключение при отправке объектов в службу WCF, может ли кто-нибудь помочь мне решить эту проблему.
Исключение:
Модуль форматирования выдал исключение при попытке десериализации сообщения: произошла ошибка при попытке десериализации параметра http://tempuri.org/:xxxx(объект класса). Сообщение InnerException гласило: "произошла ошибка десериализации объекта xxxxx.xx.xxx.xxxx(класс). Максимальная глубина чтения (200) была превышена, поскольку считываемые XML-данные имеют больше уровней вложенности, чем это разрешено квотой. Эта квота может быть увеличена путем изменения свойства MaxDepth объекта XmlDictionaryReaderQuotas, используемого при создании средства чтения XML. Линия 2, позиция 59349. Пожалуйста, смотрите InnerException для получения более подробной информации.
Внутреннее Исключение:
Максимальная глубина чтения (200) была превышена, поскольку считываемые XML-данные имеют больше уровней вложенности, чем это разрешено квотой. Эта квота может быть увеличена путем изменения свойства MaxDepth объекта XmlDictionaryReaderQuotas, используемого при создании средства чтения XML. Строка 2, позиция 59349.
Что я уже пробовал:
Я попробовал установить следующие readerQuotas в привязках как в клиенте, так и на сервере
<readerQuotas maxDepth="200" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
Конфигурация Моей Службы:
<system.serviceModel> <behaviors> <serviceBehaviors> <behavior name="mexBehavior"> <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/> <serviceDebug includeExceptionDetailInFaults="true"/> <dataContractSerializer maxItemsInObjectGraph="2147483646"/> </behavior> </serviceBehaviors> </behaviors> <protocolMapping> <add binding="basicHttpsBinding" scheme="https"/> </protocolMapping> <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true"/> <bindings> <basicHttpBinding> <binding name="secureHttpBinding" maxBufferPoolSize="2147483647" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647"> <readerQuotas maxDepth="200" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" /> <security mode="None"> <transport clientCredentialType="None"/> </security> </binding> </basicHttpBinding> </bindings> <services> <service behaviorConfiguration="mexBehavior" name="Service"> <endpoint address="Service" binding="basicHttpBinding" bindingConfiguration="secureHttpBinding" contract="IService"/> <host> <baseAddresses> <add baseAddress="http://localhost:8080/Service"/> </baseAddresses> </host> </service> </services> </system.serviceModel>
Конфигурация Моего Клиента:
<system.serviceModel> <bindings> <basicHttpBinding> <binding name="BasicHttpBinding_IService" closeTimeout="00:05:00" openTimeout="00:05:00" receiveTimeout="00:10:00" sendTimeout="00:05:00" maxBufferPoolSize="2147483647" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647"> <readerQuotas maxDepth="200" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" /> <security mode="None" /> </binding> </basicHttpBinding> </bindings> <client> <endpoint address="http://localhost:50259/Service.svc/Service" behaviorConfiguration="" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IService" contract="IService" name="BasicHttpBinding_IService" /> </client> </system.serviceModel>Кроме того, я добавил maxRequestLength в httpRuntime как в конфигурации клиента, так и в конфигурации службы
<system.web> <httpRuntime targetFramework="4.6" maxRequestLength="2147483646"/> </system.web>