2009-04-27 298 views
12

我有一個無法啓動的Windows服務,提示錯誤「錯誤1053:服務沒有及時響應啓動或控制請求」。啓動Windows服務失敗,出現錯誤1053

在我的調試器中運行服務工作正常,如果我雙擊遠程計算機上的服務.exe,會彈出一個控制檯窗口並繼續運行而不會出現問題 - 我甚至可以看到顯示日誌消息程序正在按照它應該的方式處理所有事情。

服務已經精細先前運行,雖然這是我第一次,個人,試圖以最新的程序所做的更改部署。我已經評估了這些變化,並且無法弄清楚它們是如何引起這個問題的,特別是因爲當沒有作爲服務啓動時,一切運行良好。

服務轉換的StartRoutine()方法是空的,所以應該以「及時的方式」返回。

我已檢查計算機上的事件日誌,而它並沒有給其他任何附加信息比沒有聽到從30秒要求的時間的服務恢復。

由於它的工作原理在我的機器上,並作爲雙擊可執行文件,我怎麼會去找出失敗的原因作爲一種服務?

哦,它是.NET 2.0,因此它不應該由表現出這種症狀的1.1框架錯誤的影響(http://support.microsoft.com/kb/839174

這個盒子是在Windows Server 2003 R2計算機上運行SP2。

+1

嘗試在僅安裝.Net 2.0的服務器上啓動.NET 4.0編譯服務時出現此錯誤 – Hovland 2012-07-12 07:45:05

回答

4

可能是一些事情,它可能有助於在展示問題的機器上獲取堆棧跟蹤。有很多方法可以做到這一點,但重要的是,您必須查看代碼中失敗的位置。

你可以用remote debugging做到這一點,但一個簡單的事情可能是隻記錄到事件記錄器或文件記錄,如果你有。從字面上看,將WriteLine(「At class :: function()」)放在代碼的各個部分中,看看你是否已經做到了。

這樣至少可以讓你找到正確的方向代碼)

更新:。

請參閱Microsoft的How to Debug Windows Services文章使用WinDbg的故障排除啓動問題的詳細信息

related question細節很好的辦法是寫在.NET調試服務

1

我同意Scott的看法,最簡單的方法就是在啓動代碼中添加一些痕跡(可能甚至不會出現在您的啓動代碼中)。

如果這沒有幫助,您可以在此處發佈您的代碼,以便其他人可以查看。

1

或許缺少一些依賴,試試這個:
- 註銷服務
- 再次註冊

如果在寄存器手段缺乏一個模塊失敗。

1

如果StartRoutine爲空,則可能是在其他地方啓動它。

IIRC你需要火了一個工作線程,然後從StartRoutine返回。其他

+0

看起來代碼是通過掛鉤構造函數中掛接的ServiceBase.Elapsed事件執行的(它是之前也是這樣做,當它工作時) – Matt 2009-04-27 15:11:37

-2

一個原因是如果複製DLL在「調試」模式下的安裝文件夾這個問題將come.What你需要做的就是運行在「釋放」模式的項目中複製DLL或直接形成Release文件夾,而不是調試文件夾,並將該DLL複製到安裝文件夾,它將工作。您可以看到DLL的大小減小,它不會包含任何調試符號,並且像那樣

5

這是一個誤導性錯誤。這可能是一個未處理的異常。

清空你的OnStart()處理程序那就試試這個在你的構造......

public MainService() 
    { 
     InitializeComponent(); 

     try 
     { 
      // All your initialization code goes here. 

      // For instance, my exception was caused by the lack of registry permissions 
      ; 
     } 
     catch (Exception ex) 
     { 
      EventLog.WriteEntry("Application", ex.ToString(), EventLogEntryType.Error); 
     } 
    } 

現在檢查的事件日誌系統爲您的應用程序錯誤。

1

一個可能導致這個錯誤的問題是,如果其需要部署Windows服務是由一些錯誤的,即作爲我來說,我已經提到了記錄一些文件夾和文件也可以是簡單的授權錯誤,或任何其不存在,但是當提供這些文件和文件夾的正確路徑時,它解決了我的問題。

0

我通過關於這個問題每一個崗位跑,沒有響應的解決了這個問題,所以我加入的情況下,該響應這可以幫助別人。誠然,這隻適用於新的服務,而不是這個特定的情況。

我正在寫一個文件偵聽服務。作爲一個控制檯應用程序,它完美運行。當我將它作爲服務運行時,我得到了與上面相同的錯誤。我不知道的(以及許多有關服務的MSDN文章很容易就忽略掉了)是您需要從ServiceBase.Run(YourClassName());中執行您的類。否則,您的應用程序會執行並立即終止,因爲它會終止,即使沒有發生錯誤或異常,您也會收到上述錯誤。這裏是一篇關於這個文章的鏈接。它實際上討論設置應用雙重用途 - 控制檯應用程序和服務:Create a combo command line/Windows service app

0

我有這樣的問題,我的問題是配置文件的來源。我在記事本中編輯它,記事本添加了一個特殊字符,導致服務無法正常運行,因爲配置文件被破壞。我在notepad ++中看到了這個特殊字符,在刪除它之後,服務開始像以前一樣成功運行。

0

在我的情況下,正確的.NET架構沒有安裝,我是在安裝Windows服務的服務器上。

相關問題