Максимальный размер сообщения в WCF
Привет,
Я разработал сервис WCF, который возвращает байты файла.
Но если размер файла больше 40 МБ это дает мне ошибку
Сообщение об исключении: произошла ошибка при получении HTTP-ответа на http://localhost:56198/Service.svc.This это может быть связано с тем, что привязка конечной точки службы не использует протокол HTTP. Это также может быть связано с тем, что контекст HTTP-запроса прерывается сервером (возможно, из-за закрытия службы). Дополнительные сведения см. В разделе журналы сервера.
Внутреннее сообщение об исключении: базовое соединение было закрыто: произошла неожиданная ошибка при получении.
Внутреннее сообщение об исключении: невозможно прочитать данные из транспортного соединения: существующее соединение было принудительно закрыто удаленным хостом.
Внутреннее сообщение об исключении: существующее соединение было принудительно закрыто удаленным хостом
Мой Web. config-это
<bindings> <basicHttpBinding> <binding name="basicHttpEndpointBinding" closeTimeout="01:01:00" openTimeout="01:01:00" receiveTimeout="01:10:00" sendTimeout="01:01:00" allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" maxBufferSize="2147483646" maxBufferPoolSize="2147483646" maxReceivedMessageSize="2147483646" messageEncoding="Mtom" textEncoding="utf-8" transferMode="Buffered" useDefaultWebProxy="true"> <readerQuotas maxDepth="2147483646" maxStringContentLength="2147483646" maxArrayLength="2147483646" maxBytesPerRead="2147483646" maxNameTableCharCount="2147483646" /> <security mode="None"> <transport clientCredentialType="None" proxyCredentialType="None" realm="" /> <message clientCredentialType="UserName" algorithmSuite="Default" /> </security> </binding> </basicHttpBinding> </bindings> <services> <service behaviorConfiguration="ServiceBehavior1" name="Service"> <endpoint address="" binding="basicHttpBinding" bindingConfiguration="basicHttpEndpointBinding" contract="IService"> <identity> <dns value="localhost"/> </identity> </endpoint> <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/> </service> </services> <behaviors> <serviceBehaviors> <behavior name="ServiceBehavior1"> <serviceMetadata httpGetEnabled="true"/> <serviceDebug includeExceptionDetailInFaults="false"/> <dataContractSerializer maxItemsInObjectGraph="2147483646"/> </behavior> </serviceBehaviors> </behaviors>
Я сделал те же изменения на стороне клиента, но все еще безуспешно
Что я уже пробовал:
Я попробовал изменить свойства Привязок
G3Coder
Привет,
Я не думаю, что размер файла является проблемой - по моему опыту, ошибка, возникающая при превышении размера, упоминает размер как ограничение. Не могли бы вы предоставить конфигурацию клиента?
Pratik 10834354
Да, вы правы. Проблема не в размере файла, потому что их максимальный размер файла составляет 3 МБ. Они вызывают мой сервис в цикле (содержит 105 файлов)через планировщик.
Я проверил это в своей системе,но это не дает никакой ошибки, я проверил с 50 файлами более 10 МБ файлов.
Мой Web. config - это (клиентская сторона)
& lt;system. servicemodel>
& lt;привязки>
& lt;basichttpbinding>
<binding name= "BasicHttpBinding_IService">
< поведение>
<endpointbehaviors>
< имя поведения= "debuggingBehaviour">
<datacontractserializer maxitemsinobjectgraph= "2147483646">
< клиент>
< адрес конечной точки="http://192.168.0.132:8099/Service.svc" binding= "basicHttpBinding" bindingconfiguration=" BasicHttpBinding_IService "contract=" ServiceReference1.IService "name=" BasicHttpBinding_IService " >
Веб-служба не выдает подробных ошибок, она выдает только "ошибка произошла при получении HTTP-ответа ...", если они пытаются использовать один файл, и" базовое соединение было закрыто: неожиданная ошибка произошла при получении", если они пытаются использовать несколько файлов.
Также обратите внимание, что раньше они получали много ошибок, но после предоставления обновленного Web.config (увеличенный размер и параметры readerQuota) они получают меньше ошибок.
Tom Wauters
Привет,
Как говорит G3Coder, я также не думаю, что размер файла является проблемой. Когда служба выходит из строя, она отключает его канал связи с клиентом. Клиент не знает об этом и все еще использует этот канал для связи со службой. Когда это происходит, вы также можете получить эту ошибку. Если сервис принадлежит вам, попробуйте отладить его и проверить, в какой момент Вы получаете ошибку. Если служба не ваша, попросите владельца службы установить значение < servicedebug includeexceptiondetailinfaults="false"в true, чтобы вы получили сообщение об ошибке обратно из службы.
Pratik 10834354
да, проблема не в размере, и я уже установил < servicedebug includeexceptiondetailinfaults="false"> В true, но все равно он не дает фактической ошибки.
G3Coder
Привет,
Вы пробовали трассировку WCF? В частности, & lt;source name= " System.ServiceModel "switchvalue= "Warning" />
https://msdn.microsoft.com/en-us/library/ms751526(v=против 110). aspx
Г