Pratik 10834354 Ответов: 1

Максимальный размер сообщения в 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

Г

1 Ответов

Рейтинг:
1

Harpreet05Kaur

ПРИВЕТ,

Я думаю, что проблема заключается в следующем :

transfermode у
Договор
behaviorConfiguration
название поведение=ServiceBehavior1

Посмотрите на это и попытайтесь решить.