我是wcf和mulit-thread的新手,我寫了一個IIS7託管的wcf服務,在這個服務中有一個長時間運行的任務(System.Threading.Tasks.Task),它可能會運行20個小時。爲什麼WCF服務每20分鐘停止工作一次?
但是這個wcf服務總是停止工作,每20分鐘一次。
當application_stop和application_start運行時,我使wcf發送電子郵件給我。因此,我開始運行時收到一封電子郵件,然後在20分鐘後,我收到電子郵件顯示該服務停止。
我真的不明白爲什麼會發生這種情況,爲什麼服務每20分鐘停止工作一次。
wcf服務每20分鐘停止一次還是任務線程每20分鐘停止一次?
IIS7的任何配置會影響wcf的運行時間嗎?
我嘗試了receiveTimeout設置爲一個很長的時間量,我用asych調用來調用客戶端WCF,但是這並沒有使幫助。
夥計們,我真的需要幫助,非常感謝。
下面的代碼屬於一個網站,該網站稱此WCF服務
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_IMailingService" closeTimeout="00:01:00"
openTimeout="00:01:00" receiveTimeout="24.20:31:23.6470000" sendTimeout="00:01:00"
allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
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://localhost:92/MailingService.svc" binding="basicHttpBinding"
bindingConfiguration="BasicHttpBinding_IMailingService" contract="MalingService.IMailingService"
name="BasicHttpBinding_IMailingService" />
</client>
</system.serviceModel>
感謝Sachin,我試圖將空閒時間設置爲5分鐘,以便wcf服務在5分鐘內停止。 – 2011-04-21 02:41:34
謝謝Sachin,我將空閒時間更改爲0,以使此wcf服務保持運行。我知道這不是一個理想的解決方案。但是我現在必須選擇這種方法。我計劃在未來將其轉移到Windows服務中。但是如何讓一個網站調用這個Windows服務?你有什麼想法嗎?謝謝。 – 2011-04-21 04:07:29
應用程序池的這種和其他「副作用」是我總是建議自己託管生產級WCF服務的一些原因,這是在受控的Windows NT服務中。 – 2011-04-21 06:15:22