Silverlight 4 & WCF Невозможно вставить запись данных с длинным ядром в качестве параметра метода - PullRequest
0 голосов
/ 21 апреля 2011

Я работаю над проектом с использованием Silverlight 4 и WCF. Все веб-методы, кроме одного, работают нормально. В Silverlight я использую пользовательский модуль записи xaml для записи строки и хочу сохранить строку в базе данных. Используя метод Insert в веб-сервисе, я могу вставлять данные, пока строковый параметр не слишком велик. При попытке вставить строку, созданную писателем xaml, я получаю сообщение об ошибке. Я использовал Fiddler, чтобы отследить ошибку, и я получаю ошибку HTTP 400. Я прочитал в многочисленных постах, что мне нужно изменить настройки конфигурации на сервере servce в веб-приложении и в конфигурации клиента в приложении Silverlight. I Я сделал все изменения, которые смог найти в Интернете. Я не знаю, что еще попробовать, и у меня закончились ресурсы. Когда я вставляю строку xaml в Блокнот и сохраняю ее, файл занимает всего 425 КБ. изменения, которые я внес в каждый файл конфигурации. Надеюсь, кто-нибудь может указать мне на то, что мне не хватает. Спасибо за просмотр моей проблемы.

файл web.config в веб-приложении:

     <system.serviceModel>
<behaviors>
    <serviceBehaviors>
        <!-- Enable the serializer to serialize greater number of records -->
        <behavior name="CustomServiceBehavior">
            <serviceMetadata httpGetEnabled="true"/>
            <serviceDebug includeExceptionDetailInFaults="false"/>
            <dataContractSerializer maxItemsInObjectGraph="2147483647"/>
        </behavior>
    </serviceBehaviors>
</behaviors>
 <bindings>
   <basicHttpBinding>
    <binding name="CustomBinding">
     <readerQuotas maxDepth="2147483647" maxArrayLength="2147483647"
      maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
    </binding>
   </basicHttpBinding>

ServiceReferences.ClientConfig:

<configuration>
<system.serviceModel>
    <bindings>
        <basicHttpBinding>
            <binding name="BasicHttpBinding_DBService" maxBufferSize="2147483647"
                maxReceivedMessageSize="2147483647">
                <security mode="None" />
            </binding>
        </basicHttpBinding>
    </bindings>
    <client>
        <endpoint address="http://localhost.:49436/BuilderWebService/DBService.svc"
            binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_DBService"
            contract="ServiceReference1.DBService" name="BasicHttpBinding_DBService" />
    </client>
</system.serviceModel>

1 Ответ

0 голосов
/ 21 апреля 2011

В вашем web.config в теге привязки вы должны добавить атрибуты: maxBufferPoolSize, maxReceivedMessageSize, maxBufferSize :

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

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

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