2010-02-26 2 views
1

У нас есть .Net 3.5 Workflow, размещенный как служба, которая иногда неожиданно останавливается. Это случалось иногда, когда оно записывает файл и, самое последнее, при получении ответа от другой службы WCF. Исключений нет, так как все они регистрируются, а в журналах событий на сервере, на которых они размещены, нет сообщений. Я добавил регистрацию, чтобы проверить, завершает ли эта услуга ее логика (она занимает около 6 минут). Все мои тайм-ауты намного выше, чем они должны быть. Я начинаю думать, что проблема может заключаться в том, что канал закрывается, и из-за очень высоких тайм-аутов ошибка еще не выбрана. Потенциальная значимость, рабочий процесс вызывает асинхронную службу wcf, а затем использует WaitOne() в AsyncWaitHandle. У меня такое чувство, возможно, это не лучшая идея, но я не уверен, может ли это вызвать эту проблему. Кроме того, персистентность не настроена на рабочий процесс (ранее я думал, что параметр unloadOnIdle может вызвать проблемы с получением возвращаемых значений из вызываемой службы, поскольку я не очень понимаю, как это должно работать).Рабочий процесс как служба WCF Неожиданно останавливается

Любая помощь/совет были бы весьма признательны.

ответ

0

Повороты так как я думал, рабочий процесс не размещался в собственном рабочем процессе. Еще одно приложение разбило процесс. Служба WCF была правильно настроена для использования собственного рабочего процесса, поэтому она корректно вернулась, но к уже не запущенному приложению.

0

Вы проверили настройки таймаута на клиенте. Я знаю, что в прошлом мне приходилось обновлять как настройки тайм-аута клиента, так и настройки сервера.

+0

Смотрите мой комментарий ниже ... – Brian

0

В рабочем процессе App.config (отсутствует тайм-аут для хостинга рабочего процесса?):

<bindings> 
    <basicHttpBinding> 
    <binding name="BasicHttpBinding_IService" closeTimeout="00:02:00" 
     openTimeout="00:02:00" receiveTimeout="04:00:00" sendTimeout="04:00:00" 
     allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" 
     maxBufferSize="655360000" maxBufferPoolSize="2147483647" maxReceivedMessageSize="655360000" 
     messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered" 
     useDefaultWebProxy="true"> 
     <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" 
     maxBytesPerRead="4096" maxNameTableCharCount="16384" /> 
     <security mode="None"> 
     <transport clientCredentialType="None" proxyCredentialType="None" 
      realm="" /> 
     <message clientCredentialType="UserName" algorithmSuite="Default" /> 
     </security> 
    </binding> 
    </basicHttpBinding> 
</bindings> 
<client> 
    <endpoint address="http://url/Service.svc" 
    binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IService" 
    contract="DALService.IService" name="BasicHttpBinding_IService" /> 
</client> 

В web.config DalService WCF:

<httpRuntime 
    maxRequestLength="1048576" 
    executionTimeout="6000000" 
/> 
<basicHttpBinding> 
<binding name ="LargeMessageBinding" 
      closeTimeout="00:01:00" 
      openTimeout="00:01:00" receiveTimeout="04:30:00" sendTimeout="04:30:00" 
      allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" 
      maxBufferSize="655360000" maxBufferPoolSize="524288" maxReceivedMessageSize="655360000" 
      messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered" 
      useDefaultWebProxy="true" 
     /> 
<!--maxReceivedMessageSize="6553600" --> 
<!--maxBufferSize="6553600" --> 

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