Сбой службы WCF: при получении ответа HTTP произошла ошибка
У меня есть сервис WCF, и я размещаю его на своем локальном сервере (локальном компьютере), он работает нормально, но когда я размещаю его на сервере (в Интернете), он выдает ошибку
Произошла ошибка при получении ответа HTTP на http://www.xxxxxxxx.com/Services/WCFService.svc. Это может быть связано с тем, что привязка конечной точки службы не использует протокол HTTP. Это также может быть связано с тем, что сервер прерывает контекст HTTP-запроса (возможно, из-за закрытия службы). Смотрите журналы сервера для более подробной информации.
Этот сервис WCF предназначен для загрузки файлов PDF, а также выполняет операции в соответствии с загруженным файлом PDF.
проблема возникает, когда я загрузил файл PDF, и этот файл имеет больше страниц (около 500), в то время как это занимает больше времени (приблизительно от 6 до 8 минут).
если я загружу pdf-файл, который содержит 100 страниц, 200 страниц, 300 страниц, тогда он работает хорошо.
ПРИМЕЧАНИЕ: весь файл PDF имеет размер менее 5 МБ.
2 ответа
Вполне возможно, что обработка занимает слишком много времени и время ожидания клиента, прежде чем она будет продолжена
<bindings>
<basicHttpBinding>
<binding name="IncreasedTimeout"
sendTimeout="24:00:00">
</binding>
</basicHttpBinding>
</bindings>
Поскольку загрузка файлов на локальный хост происходит мгновенно - этот тайм-аут учитывает как обработку сервера, так и загрузку на ваш сервер.
Для этого нужно установить максимальный размер сообщения и размер буфера для веб-сайта WCF.
<bindings>
<webHttpBinding>
<binding name="LargeWebBinding"
maxBufferPoolSize="2147483647"
maxReceivedMessageSize="2147483647"
maxBufferSize="2147483647">
<readerQuotas
maxArrayLength="2147483647"
maxNameTableCharCount="2147483647"
maxStringContentLength="2147483647"
maxDepth="2147483647"
maxBytesPerRead="2147483647" />
</binding>
Вы можете попробовать использовать это:
<behaviors>
<serviceBehaviors>
<behavior name="LargeWebBehavior">
<dataContractSerializer ignoreExtensionDataObject="true" maxItemsInObjectGraph="2147483647" />
<serviceDebug includeExceptionDetailInFaults="true" />
<serviceTimeouts transactionTimeout="00:10:00" />
<serviceThrottling maxConcurrentCalls="200" maxConcurrentSessions="100"
maxConcurrentInstances="100" />
</behavior>
</serviceBehaviors>
</behaviors>