привязка и настройка для webHttpBinding в RESTful-сервисе? - PullRequest
2 голосов
/ 06 января 2012

Я новичок в WCF и пытаюсь разобраться в лабиринте конфигураций, которые принимают службы.У меня есть служба отдыха, которая может вернуть экспорт таблицы, который больше, чем по умолчанию maxReceivedMessageSize.Поэтому я пытаюсь поиграть с конфигом для этой службы / конечной точки, и у меня ничего не получается.Ниже, если суть того, над чем я работаю, чего мне не хватает?Я просто возвращаю List в виде JSON или XML, и мне нужно иметь возможность вернуть пороговое значение по умолчанию.

<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />

<services>
  <!-- defin service -->
  <service behaviorConfiguration="EPRestBehavior" name="EPRestDNS">
    <endpoint address="" 
              bindingConfiguration="ApiExportBinding"
              binding="webHttpBinding" 
              contract="IDNSRestService" />
  </service>
</services>

<behaviors>
  <serviceBehaviors>
    <behavior name="EPRestBehavior">
      <serviceMetadata httpGetEnabled="true"/>
      <serviceDebug includeExceptionDetailInFaults="true"/>
    </behavior>
  </serviceBehaviors>

  ...

</behaviors>
<bindings>
  <!-- Customizations for REST service -->
  <webHttpBinding>
    <binding name="ApiExportBinding" maxReceivedMessageSize="10485760"
                    maxBufferPoolSize="10485760" maxBufferSize="10485760" closeTimeout="00:03:00"
                    openTimeout="00:03:00" receiveTimeout="00:10:00" sendTimeout="00:03:00">
      <readerQuotas maxDepth="32" maxStringContentLength="10485760"
                      maxArrayLength="10485760" maxBytesPerRead="10485760" />
      <security mode="None" />
    </binding>
  </webHttpBinding>
</bindings>

<standardEndpoints>
  <webHttpEndpoint>
    <standardEndpoint name="" helpEnabled="true" automaticFormatSelectionEnabled="true" />
  </webHttpEndpoint>
</standardEndpoints>

UPDATE 1 Я удалил всеэтого конфига и пробовал что-то попроще с существующим разделом webHttpEndpoint:

<standardEndpoints>
  <webHttpEndpoint>
    <standardEndpoint name="" helpEnabled="true" automaticFormatSelectionEnabled="true" maxReceivedMessageSize="1000000000" />
  </webHttpEndpoint>
</standardEndpoints>

с теми же результатами.HTTP/1.1 502 Connection reset by peer

Ответы [ 2 ]

3 голосов
/ 10 января 2012

Все это почему WCF ужасен.В конце я создаю svclog на сервере, и фактическая проблема достигла предела в графе объектов по умолчанию.Я добавил новый предел, который я хочу, к реализации, и это было так.7+ часов просто для такой глупости.

[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall, MaxItemsInObjectGraph = 2147483646)]
2 голосов
/ 06 января 2012

Возникает ли исключение на стороне службы или на стороне клиента?Распространенной ошибкой является то, что вы изменяете значения на сервере, но забыли изменить также и на клиенте.

...