2012-06-05 18 views
3

我有一個關於我開始的進程的問題。在IIS中啓動一個新的工作進程c#

我用Process.Start()方法開始這個過程。 該過程是沒有GUI的Windows窗體應用程序。我從一個運行在它自己的應用程序池(作爲LocalSystem運行)上的Web應用程序啓動該進程。

該過程開始沒有問題,但過了一段時間後,我可以在日誌中看到該過程停止執行作業(不記錄發生)。如果我停止啓動該進程的應用程序池並再次啓動該池(除此之外別無其他),則該進程從停止的位置開始。我可以從停止的日誌中看到這一點。

我沒有任何父(網絡應用程序)的依賴項。我不會在孩子的過程中等待任何事情。它只會對另一臺服務器進行很多API調用。代碼在以線程運行時實際運行完美無缺。我改變了一個孩子的過程,因爲我想讓它運行長時間的工作。如果我使用了工作進程,IIS就會關閉我。

因此,任何人都會發生什麼導致這種奇怪的行爲?

+0

Doe的過程完全掛起或終止,請檢查_taskman_? –

+0

不,它仍在運行,因爲我可以在任務管理器中看到該進程。一旦游泳池被回收,該過程就會從「停止/暫停」的地方繼續進行。 – Arin

回答

3

歡迎IIS隨時回收應用程序池。這就是停止你的過程。

您應該將流程移到自己的作爲Windows服務運行的應用程序中。

+0

但我開始一個單獨的過程。它不依賴於IIS應用程序池。我甚至可以在系統用戶上運行的任務管理器中看到一個進程。而且它並沒有在任務管理器中停止工作,而是停止了工作。只要我回收池中它踢 – Arin

+0

我懷疑是Process.Start()生成新的進程作爲ASP.NET父進程的子進程。我做了一些快速的谷歌搜索來證實這一點,但在我不得不放棄之前沒有找到我想要的東西(真正的工作稱爲ATM)。這是我的懷疑;希望這有助於。讓我知道!我很感興趣。 –

+0

......如果最後的評論不清楚,我的想法是,如果新進程是ASP.NET進程的子進程,那麼當IIS回收作爲ASP運行的父進程時,子進程會關閉.NET應用程序池。 –

相關問題