Ошибка квоты длины содержимого XmlDictionaryReaderQuotas (8192) при отправке клиентом сообщения - PullRequest
0 голосов
/ 10 октября 2010

У меня есть приложение silverlight (не asp) и служба wcf.

Когда я читаю большие данные из службы wcf 60k +, приложение silverlight успешно получает информацию из службы wcf. Тем не мение.... Когда я пытаюсь отправить (клиент Silverlight в службу wcf) большие данные 30k +, я получаю ошибку XmlDictionaryReaderQuotas, но когда я отправляю информацию 2k, тогда все работает нормально.

Это мой файл ServiceReferences.ClientConfig

<system.serviceModel>
        <bindings>
            <basicHttpBinding>
                <binding name="BasicHttpBinding_IService1" maxBufferSize="2147483647"
                    maxReceivedMessageSize="2147483647">
                    <security mode="None" />
                </binding>
            </basicHttpBinding>
        </bindings>
        <client>
            <endpoint address="http://localhost:1320/Service1.svc"
                binding="basicHttpBinding"
                bindingConfiguration="BasicHttpBinding_IService1"
                contract="ServiceReference1.IService1"
                name="LargeBuffer" />
        </client>
    </system.serviceModel>

А это мой файл app.config службы wcf ....

<system.serviceModel>
    <bindings>
      <basicHttpBinding>
        <binding name="LargeBuffer" closeTimeout="00:01:00"
          openTimeout="00:01:00"
          receiveTimeout="00:10:00"
          sendTimeout="00:01:00"
          transferMode="Buffered"
          maxReceivedMessageSize="73400320" >
          <!--70MB-->
          <readerQuotas maxArrayLength="73400320" />
        </binding>
      </basicHttpBinding>
    </bindings>
    <services />
    <behaviors>
      <serviceBehaviors>
        <behavior>
          <serviceMetadata httpGetEnabled="true"/>
          <serviceDebug includeExceptionDetailInFaults="true"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
  </system.serviceModel>

Ответы [ 2 ]

1 голос
/ 10 октября 2010

Я, вероятно, ответил на тот же вопрос на MSDN , но имена пользователей отличаются. Я думаю, что ваша конфигурация не используется, потому что на сервере вы определяете новую конфигурацию с именем BasicHttpBinding, но не используете ее ни в одной службе. Поэтому определите службу с конечной точкой, ссылающейся на эту конфигурацию, или попробуйте удалить имя из конфигурации привязки.

1 голос
/ 10 октября 2010

Если вы используете байтовый массив для передачи некоторых значений, посмотрите здесь:

http://msdn.microsoft.com/en-us/library/ms731325.aspx

Вам необходимо установить maxArrayLength на высокое значение. Это наиболее вероятная причина того, что ваш вызов не был успешным, и обычно он имеет низкое значение (я думаю, 8192).

UPDATE

Поместите это в элемент <~~~ binding>:

<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647"
              maxArrayLength="2147483647" maxBytesPerRead="2147483647"
              maxNameTableCharCount="2147483647" />

Не только maxArrayLength, но и все остальные. Это должно быть в обе стороны . Это должно работать ...

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