Я включил wcf basicHttpBinding с TransferMode, установленным в «Streaming».
Проблема заключается в том, что каждый раз, когда я выполняю операцию чтения из потока на стороне клиента, я читаю ровно 1536 байт, что является кадром Ethernet.
Как я могу заставить свою службу wcf отправлять большие пакеты данных навремя?
РЕДАКТИРОВАТЬ
Итак, по-видимому, по умолчанию BytesPerRead - 4096, однако я изменил это значение как на клиенте, так и на сервере.вот файл конфигурации
Кроме того, я нашел сообщение без ответа, посвященное той же проблеме
WCF maxBytesPerRead ограничение до 4096
Сервер SERVER
(обратите внимание, что у меня есть две конечные точки, одна для загрузки контента в basicHttpBinding, а другая для связи с использованием ws2007HttpBinding, я имею в виду конечную точку basicHttpBinding в моем вопросе)
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="MyBasicHttpBinding" allowCookies="true" maxBufferSize="955366"
maxBufferPoolSize="964285" maxReceivedMessageSize="955556" messageEncoding="Mtom"
transferMode="Streamed">
<readerQuotas maxDepth="60" maxStringContentLength="955556" maxArrayLength="955556"
maxBytesPerRead="955556" maxNameTableCharCount="955556" />
</binding>
</basicHttpBinding>
<ws2007HttpBinding>
<binding name="MyBinding" allowCookies="false">
<security mode="None" />
</binding>
</ws2007HttpBinding>
</bindings>
<services>
<service behaviorConfiguration="ContentManagementServiceBehavior"
name="App_Code.Services.ContentManagement.ContentManagementService">
<clear />
<endpoint address="mex" binding="mexHttpBinding" name="mex" contract="IMetadataExchange"
listenUriMode="Explicit" />
<endpoint binding="ws2007HttpBinding" bindingConfiguration="MyBinding"
name="ws2007Endpoint" contract="App_Code.Services.ContentManagement.IContentManagementService"
listenUriMode="Explicit" />
<endpoint address="/download" binding="basicHttpBinding" bindingConfiguration="MyBasicHttpBinding"
name="basicHttpBinding" contract="App_Code.Services.ContentManagement.IContentManagementDownlodService" />
<host>
<baseAddresses>
<add baseAddress="/Services/ContentManagement/ContentManagementService.svc" />
</baseAddresses>
</host>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="ContentManagementServiceBehavior">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true"/>
</system.serviceModel>
CLIENT
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="basicHttpBinding" closeTimeout="00:10:00" openTimeout="00:10:00"
receiveTimeout="00:10:00" sendTimeout="00:10:00" allowCookies="false"
bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
maxBufferPoolSize="92429000" maxReceivedMessageSize="65536000" messageEncoding="Mtom"
textEncoding="utf-8" transferMode="Streamed" useDefaultWebProxy="true">
<readerQuotas maxDepth="90" maxStringContentLength="65536000" maxArrayLength="65536000"
maxBytesPerRead="655360" maxNameTableCharCount="65536000" />
<security mode="None" />
</binding>
</basicHttpBinding>
<wsHttpBinding>
<binding name="ws2007Endpoint" closeTimeout="00:01:00" openTimeout="00:01:00"
receiveTimeout="00:10:00" sendTimeout="00:01:00" bypassProxyOnLocal="false"
transactionFlow="false" hostNameComparisonMode="StrongWildcard"
maxBufferPoolSize="524288646" maxReceivedMessageSize="65536646"
messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true"
allowCookies="false">
<readerQuotas maxDepth="32" maxStringContentLength="819264564"
maxArrayLength="163846764" maxBytesPerRead="40964543" maxNameTableCharCount="16384564" />
<reliableSession ordered="true" inactivityTimeout="00:10:00"
enabled="false" />
<security mode="None">
<transport realm="" />
</security>
</binding>
</wsHttpBinding>
</bindings>
<client>
<endpoint address="<absolute address>"
binding="wsHttpBinding" bindingConfiguration="ws2007Endpoint"
contract="ContentManagementServiceReference.IContentManagementService"
name="ws2007Endpoint" />
<endpoint address="<absolute address>"
binding="basicHttpBinding" bindingConfiguration="basicHttpBinding"
contract="ContentManagementServiceReference.IContentManagementDownlodService"
name="basicHttpBinding" />
</client>
</system.serviceModel>