Вызов веб-службы Azure из Silverlight с объемом данных более 16 КБ - PullRequest
0 голосов
/ 11 февраля 2012

Я вызываю веб-службу Azure (WCF) из приложения Silverlight. Silverlight поддерживает только basicHttpBinding, поэтому мой файл ServiceReferences.ClientConfig выглядит следующим образом:

<configuration>
    <system.serviceModel>
        <bindings>
            <basicHttpBinding>
                <binding name="BasicHttpBinding_IServices" maxBufferSize="2147483647"
                    maxReceivedMessageSize="2147483647">
                    <security mode="None" />
                </binding>
            </basicHttpBinding>
        </bindings>
        <client>
            <endpoint address="http://(AzureUri)/Services.svc"
                binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IServices"
                contract="WebServices.IServices" name="BasicHttpBinding_IServices" />
        </client>
    </system.serviceModel>
</configuration>

Проблема заключается в том, что приложение Silverlight аварийно завершает работу с печально известным сообщением об ошибке «NotFound» при обращении к веб-службе Azure с более чем 16384 байтами данных, что явно нарушает одно из ограничений.

Но basicHttpBinding не поддерживает такие атрибуты, как maxBytesPerRead, maxStringContentLength, поэтому я не знаю, как разрешить вызовы веб-службы Azure с более чем 16 КБ данных.

Гугл просто смутил меня больше, поэтому любая помощь приветствуется ...

Спасибо за ваше время, Пол

Ответы [ 3 ]

1 голос
/ 18 февраля 2012

В конфигурации сервера убедитесь, что атрибут bindingConfiguration элемента конечная точка внутри элемента service правильно указывает на имя привязки. Также убедитесь, что элемент binding указывает на «basicHttpBinding». В общем, внимательно просмотрите все имена, потому что, если одно из них будет введено с ошибкой или отсутствует, вы получите конфигурации по умолчанию на сервере.

Полный пример см. Получение огромного количества данных из службы WCF в приложении Silverlight .

0 голосов
/ 17 февраля 2012

(Перекрестная публикация на MSDN, так как я не получил ответа, и это срочно ...)

Мне кажется, проблема в том, что веб-служба работает в Azure.

• Если служба работает локально, я могу передать ей более 16 КБ данных. • Если служба работает в Azure, я получаю сообщение: «Превышена квота максимальной длины массива (16384) при чтении данных XML».

Но у меня есть следующие настройки в Web.config службы:

<bindings>
  <basicHttpBinding>
    <binding name="BasicHttpBinding_IAzureServices"
                   maxBufferPoolSize     ="2147483647"
                   maxBufferSize         ="2147483647"
                   maxReceivedMessageSize="2147483647">
    <readerQuotas  maxArrayLength        ="2147483647"
                   maxBytesPerRead       ="2147483647"
                   maxDepth              ="2147483647"
                   maxNameTableCharCount ="2147483647"
                   maxStringContentLength="2147483647" />
    </binding>
  </basicHttpBinding>
</bindings>

Итак, кажется, что параметр maxBufferSize игнорируется при запуске службы в Azure.

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