2010-02-26 68 views
1

我们有一个作为服务托管的.Net 3.5工作流,有时会意外停止。这在写文件的时候就已经发生了,最近在从另一个WCF服务接收到回复时发生。没有任何异常被捕获,因为这些都被记录下来,并且服务器上的事件日志中没有任何消息被托管。我添加了日志记录来验证服务正在完成它的逻辑,这是(大约需要6分钟)。我所有的时间都远远超过了他们的需要。我开始认为这个问题可能是该频道正在关闭,并且由于超时时间过长,错误还没有出现。具有潜在相关性的工作流是异步调用wcf服务,然后在AsyncWaitHandle上使用WaitOne()。我有一种感觉,这可能不是最好的想法,但我不确定是否会导致这个问题。此外,工作流程上没有设置持久性(我以前认为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> 

在DalService WCF的web.config:

<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" -->