У меня проблема, когда я пытаюсь передать большое количество объектов из моей службы WCF. Я должен ограничить перенос объектов на 100, в противном случае возникает некоторая коммуникационная ошибка.По-прежнему не удается передать большие объемы данных через WCF - что еще не так?
Я пробовал рекомендации в решении, найденном here, но, возможно, мне что-то не хватает, поскольку я все еще получаю сообщение об ошибке.
Вот нижняя часть web.config моей службы WCF в:
<system.web>
<httpRuntime maxRequestLength="102400" />
<compilation debug="true" targetFramework="4.0" />
</system.web>
<system.serviceModel>
<bindings>
<wsHttpBinding>
<binding name="MyWsHttpBinding" />
</wsHttpBinding>
<netTcpBinding>
<binding name="myNetTcpBinding"
closeTimeout="00:01:00"
openTimeout="00:01:00"
receiveTimeout="00:10:00"
sendTimeout="00:01:00"
transactionFlow="false"
transferMode="Buffered"
transactionProtocol="OleTransactions"
hostNameComparisonMode="StrongWildcard"
listenBacklog="10"
maxBufferPoolSize="2147483647"
maxBufferSize="524288"
maxConnections="10"
maxReceivedMessageSize="2147483647">
<readerQuotas maxDepth="32"
maxStringContentLength="8192"
maxArrayLength="16384"
maxBytesPerRead="4096"
maxNameTableCharCount="16384" />
<reliableSession ordered="true"
inactivityTimeout="00:10:00"
enabled="false" />
<security mode="Transport">
<transport clientCredentialType="Windows" protectionLevel="EncryptAndSign" />
</security>
</binding>
</netTcpBinding>
</bindings>
<behaviors>
<serviceBehaviors>
<behavior name="myNetTcpBehaviour">
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="true"/>
<dataContractSerializer maxItemsInObjectGraph="2147483647"/>
</behavior>
<behavior>
<!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
<serviceMetadata httpGetEnabled="true"/>
<!-- To receive exception details in faults for debugging purposes, set the value below to true. Set to false before deployment to avoid disclosing exception information -->
<serviceDebug includeExceptionDetailInFaults="true"/>
</behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior name="myNetTcpEndPointBehaviour">
<dataContractSerializer maxItemsInObjectGraph="2147483647"/>
</behavior>
</endpointBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
</system.serviceModel>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
Далее, вот нижняя часть web.config части веб-сайта, который потребляет веб-службы:
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_IFeederService" closeTimeout="00:01:00"
openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
maxBufferSize="2147483647" maxBufferPoolSize="524288" maxReceivedMessageSize="2147483647"
messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
useDefaultWebProxy="true">
<readerQuotas maxDepth="32" maxStringContentLength="55000" maxArrayLength="16384"
maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<security mode="None">
<transport clientCredentialType="None" proxyCredentialType="None"
realm="" />
<message clientCredentialType="UserName" algorithmSuite="Default" />
</security>
</binding>
</basicHttpBinding>
</bindings>
<behaviors>
<endpointBehaviors>
<behavior name="myEndPointBehavior">
<dataContractSerializer maxItemsInObjectGraph="2147483647" />
</behavior>
</endpointBehaviors>
</behaviors>
<client>
<endpoint address="http://www.mysiate.com/MyService.svc"
binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IFeederService"
contract="FeederService.IFeederService" name="BasicHttpBinding_IFeederService" />
</client> </system.serviceModel>
ошибки я получаю: произошла
ошибки при получении ответа HTTP на http://www.mysite.com/MyService.svc. Это может быть связано с привязкой конечной точки , не использующей протокол HTTP. Это также может быть вызвано контекстом HTTP-запроса, который прерывается сервером (возможно, из-за к завершению работы службы). Подробнее см. Журналы сервера.
Странная вещь в том, что, когда я писал это сообщение, я повторил его с изменением логики возврата до 190 объектов, и это сработало. Повторил, и он потерпел неудачу.
Возможно, это вопрос изменения некоторых параметров IIS?
Любая помощь по этому вопросу будет оценена по достоинству.
Спасибо.
Как насчет [это] (http://social.msdn.microsoft.com/Forums/en-US/wcf/thread/ 686499d2-5e31-47ee-941B-760264472875 /)? –
Это также может помочь http://stackoverflow.com/questions/1281269/response-size-limitaiton-of-a-wcf-web-serivces. Проблема может быть связана с ограничением размера конфигурации basichttpbinding. – Muthu
Сколько всего вы переводите? –