2013-03-18 36 views
4

我們在C#中實現了一對發送和接收傳真的服務。直到上週,這些服務在幾臺服務器上運行得非常完美。 我們的客戶之一升級到Windows Server 2012.我們安裝了所有的服務和所有地獄般的寬鬆。 基本上,其中一項服務似乎可以工作幾分鐘,然後,出於某種未知原因 - 使用OnStop方法。所以某人或某事正在阻止它,但我不知道它是什麼。 我怎麼能去調試呢?我是C#的新手,這不是我的代碼。 任何幫助,將不勝感激。如何調試在生產服務器上無故停止的C#服務

+10

日誌記錄,日誌記錄。 – 2013-03-18 07:51:04

+1

您是否檢查過事件查看器?如果您的Windows服務引發了未捕獲的異常,它應該在事件查看器\應用程序日誌中顯示爲錯誤。 – 2013-03-18 07:54:00

+0

什麼是您的EventLog系統 – TalentTuner 2013-03-18 07:54:05

回答

3

有趣的是,你正在發送和接收傳真的事實:它可能與Windows Server 2008/2012中引入的一些Session 0 Insolation有關,這可能會導致與圖形相關的服務出現問題。 如果您在發展計算機上運行服務器,使用Windows7/8盒和SYSTEM用戶,您可能會重現該問題。

+0

Felice - 感謝您的提示。這實際上非常有趣,因爲我們在服務中有一個圖形組件,出現錯誤。我沒有提到這一點,因爲它是孤立的,並不是真的有必要,所以我現在評論它,直到我解決了主要問題。我一定會在稍後看到。謝謝! – user884248 2013-03-18 08:18:17

+0

@ user884248你是從2003-2012還是2008-2012移動過的? – 2013-03-18 08:55:22

2

如果它只停留在生產服務器上,生產服務器與開發服務器/工作站有些不同是合理的。

您可能不會允許您將調試器掛接到生產服務器上的某個東西,但處理此問題的最佳方法是僅將他從代碼中註銷。

你應該做足夠的日誌記錄,以找出:

  • 凡停止
  • 爲什麼它停止(我的錢是一個例外)
  • 當時的應用程序的狀態(與碰撞)

這可能必須在迭代中完成,除非你全力以赴開始。

服務和日誌齊頭並進,所以只需實現它。