2015-08-31 5 views
1

У меня есть служба WCF, и я размещаю ее на своем локальном сервере (на локальной машине), это нормально, но когда я размещаю ее на сервере (интернет), в это время она бросает ниже ошибкаWCF Service throw: произошла ошибка при получении ответа HTTP

Произошла ошибка при получении ответа HTTP на http://www.xxxxxxxx.com/Services/WCFService.svc. Это может быть связано с привязкой конечной точки службы, не использующей протокол HTTP. Это также может быть связано с тем, что сервер HTTP-запроса прерывается, и, возможно, из-за отключения службы. Подробнее см. Журналы сервера.

Эта служба WCF предназначена для загрузки файлов PDF, а также для работы в соответствии с загруженным pdf-файлом.

Проблема возникает, когда я загружаю файл в формате pdf, и в этом файле больше страниц (около 500), в это время требуется больше времени выполнения (от 6 до 8 минут).

Если я загружу pdf-файл, который имеет 100 страниц, 200 страниц, 300 страниц, в то время он работает хорошо.

ПРИМЕЧАНИЕ: весь файл pdf имеет размер менее 5 МБ.

+0

Вы уверены, что это не связано с размерами файлов PDF? Предел содержания (# страниц) кажется довольно странным. –

+0

@Vojtech: ya Я уверен, –

+1

Похоже, что обработка больших файлов PDF имеет ошибку, которая проявляется только в серверной среде. Напишите кучу журналов и посмотрите, можете ли вы указать, где работает служба. Я собираюсь угадать, что это память, сеть, разрешения или, возможно, некоторые настройки или код, которые вы написали, которые предназначены только для работы на вашей локальной машине, но которые были перенесены на производство. – Patrick87

ответ

0

Yoy необходимо установить Max Message Size и размер буфера для WCF webhttp

<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> 
+0

: уже сделано :( –

1

Вполне возможно, что обработка занимает слишком много времени, так и клиентские тайм-ауты до его начала

<bindings> 
    <basicHttpBinding> 
    <binding name="IncreasedTimeout" 
      sendTimeout="24:00:00"> 
    </binding> 
    </basicHttpBinding> 
</bindings> 

Поскольку загрузка файлов на локальный хост мгновенно - этот тайм-аут учитывает как серверную обработку, так и загрузку на ваш сервер.

Смежные вопросы