Превышена квота максимальной длины массива (16384) при чтении данных XML.

Я получаю следующую ошибку

Квота максимальной длины массива (16384) была превышена при чтении данных XML. Эту квоту можно увеличить, изменив свойство MaxArrayLength в объекте XmlDictionaryReaderQuotas, используемом при создании средства чтения XML. Строка 1, позиция 187231. Описание: необработанное исключение произошло во время выполнения текущего веб-запроса. Просмотрите трассировку стека для получения дополнительных сведений об ошибке и ее происхождении в коде.

Детали исключения:

System.Xml.XmlException: превышена максимальная квота длины массива (16384) при чтении данных XML. Эту квоту можно увеличить, изменив свойство MaxArrayLength в объекте XmlDictionaryReaderQuotas, используемом при создании средства чтения XML. Строка 1, позиция 187231.

Ошибка источника:

Необработанное исключение было создано во время выполнения текущего веб-запроса. Информацию о происхождении и местонахождении исключения можно определить с помощью трассировки стека исключений ниже.

Трассировки стека:

[XmlException: The maximum array length quota (16384) has been exceeded while reading XML data. This quota may be increased by changing the MaxArrayLength property on the XmlDictionaryReaderQuotas object used when creating the XML reader. Line 1, position 187231.]
   System.Xml.XmlExceptionHelper.ThrowXmlException(XmlDictionaryReader reader, String res, String arg1, String arg2, String arg3) +311
   System.Xml.XmlExceptionHelper.ThrowMaxArrayLengthExceeded(XmlDictionaryReader reader, Int32 maxArrayLength) +59
   System.Xml.XmlBaseReader.ReadContentAsBase64() +1580759
   System.Xml.XmlDictionaryReader.ReadElementContentAsBase64() +62
   System.Runtime.Serialization.XmlReaderDelegator.ReadElementContentAsBase64() +58
   ReadPDFResponseFromXml(XmlReaderDelegator , XmlObjectSerializerReadContext , XmlDictionaryString[] , XmlDictionaryString[] ) +525
   System.Runtime.Serialization.ClassDataContract.ReadXmlValue(XmlReaderDelegator xmlReader, XmlObjectSerializerReadContext context) +47
   System.Runtime.Serialization.XmlObjectSerializerReadContext.ReadDataContractValue(DataContract dataContract, XmlReaderDelegator reader) +15
   System.Runtime.Serialization.XmlObjectSerializerReadContext.InternalDeserialize(XmlReaderDelegator reader, String name, String ns, DataContract& dataContract) +128
   System.Runtime.Serialization.XmlObjectSerializerReadContext.InternalDeserialize(XmlReaderDelegator xmlReader, Type declaredType, DataContract dataContract, String name, String ns) +39
   System.Runtime.Serialization.DataContractSerializer.InternalReadObject(XmlReaderDelegator xmlReader, Boolean verifyObjectName) +167
   System.Runtime.Serialization.XmlObjectSerializer.ReadObjectHandleExceptions(XmlReaderDelegator reader, Boolean verifyObjectName) +98

[SerializationException: There was an error deserializing the object of type Compass.GK.DataCommon.PDFResponse. The maximum array length quota (16384) has been exceeded while reading XML data. This quota may be increased by changing the MaxArrayLength property on the XmlDictionaryReaderQuotas object used when creating the XML reader. Line 1, position 187231.]
   System.Runtime.Serialization.XmlObjectSerializer.ReadObjectHandleExceptions(XmlReaderDelegator reader, Boolean verifyObjectName) +496
   System.Runtime.Serialization.DataContractSerializer.ReadObject(XmlDictionaryReader reader, Boolean verifyObjectName) +44
   System.ServiceModel.Dispatcher.DataContractSerializerOperationFormatter.DeserializeParameterPart(XmlDictionaryReader reader, PartInfo part, Boolean isRequest) +52

[NetDispatcherFaultException: The formatter threw an exception while trying to deserialize the message: There was an error while trying to deserialize parameter http://tempuri.org/:PDFRequestResult. The InnerException message was 'There was an error deserializing the object of type Compass.GK.DataCommon.PDFResponse. The maximum array length quota (16384) has been exceeded while reading XML data. This quota may be increased by changing the MaxArrayLength property on the XmlDictionaryReaderQuotas object used when creating the XML reader. Line 1, position 187231.'.  Please see InnerException for more details.]
   System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg) +7599119
   System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type) +275
   Compass.GK.Datalink.WebServiceReference.ICompassGKService.PDFRequest(Request request) +0
   Compass.GK.Datalink.RequestMaker.PDFRequest(String encryptionKey, String PDFType, String userName) +164
   GKService.GKPDFHandler.System.Web.IHttpHandler.ProcessRequest(HttpContext context) in C:\Joxin\GreenekingApplication\Application\GKService\GKPDFHandler.cs:66
   System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +181
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +75

my web.cofing client side entry is like this
        <binding name="BasicHttpBinding_ICompassGKService" closeTimeout="00:01:00"
         openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
         allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
         maxBufferSize="2097152" maxBufferPoolSize="524288" maxReceivedMessageSize="2097152"
         messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
         useDefaultWebProxy="true">
          <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="2097152"
            maxBytesPerRead="4096" maxNameTableCharCount="2097152" />
          <security mode="None">
            <transport clientCredentialType="None" proxyCredentialType="None"
              realm="" />
            <message clientCredentialType="UserName" algorithmSuite="Default" />
          </security>
        </binding>
      </basicHttpBinding>
    </bindings>

Я ничего не знаю? Но при доступе к этому локально vs.net 2008 он работает нормально.

Но когда я публикую свое приложение на сервере, возникает только эта проблема ..

Благодарность

Shaji


person SHAJI P.D.    schedule 28.11.2010    source источник
comment
Что вы пытались сделать, когда это случилось?   -  person Marcelo Cantos    schedule 28.11.2010


Ответы (3)


Необходимо добавить конфигурацию readerQuotas, когда вы получаете WCF service Превышена квота максимальной длины массива (16384).

person Erik Philips    schedule 28.11.2010

Добавьте этот раздел над разделом привязки в файле конфигурации. Это ответ! Замените значениями ваших параметров. Файл конфигурации должен совпадать как на сервере, так и на клиенте!

<services>
    <service name="ReportService.Service1">
        <endpoint address="http:/<Your Web Address>/reportservice/service1.svc"
            binding="basicHttpBinding"
            bindingConfiguration="BasicHttpBinding_IService1"
            contract="ReportService.IService1" />
    </service>
</services>
person Brian    schedule 05.07.2011

Если у вас остались проблемы, попробуйте следующее решение.

http://csharpsqllearning.blogspot.in/2013/08/wcf-maximum-array-length-quota-16384.html

person Rikin Patel    schedule 02.08.2013