2016-07-04 45 views
2

我有一個Windows服務,當目標框架是.NET 2,當我將其更改爲.Net 4時,它可以正常工作。我重新編譯了該項目,然後使用installutil重新安裝它,然後啓動服務,但我得到「Windows無法在本地計算機上啓動服務,錯誤1067:進程意外終止。」 不知道如何繼續,OnStart()方法沒有被Debugger.Break()行命中。任何想法如何繼續?如果我更改目標框架,是否需要更新一些設置或配置?更改目標框架後,Windows服務將無法啓動

+0

當從Net 2切換到Net 4時,項目可能沒有完全重新編譯。編譯器的依賴關係並不總是能夠識別選項中的更改。解決問題的最佳方法是刪除項目中的bin文件夾並重新編譯。編譯器將重新創建bin文件夾。 – jdweng

+0

@jdweng感謝您的建議!我嘗試過,但仍然有同樣的問題。這真的很奇怪,因爲當我將它更改回.NET 2並重新編譯時,我根本沒有遇到任何問題。嗯...... –

+0

你可以添加更多的斷點來找出發生錯誤的地方嗎?你會彈出一個說:「將異常複製到剪貼板」?按下並粘貼到記事本中。圍繞無法獲得e.Message和e.StackTrace的代碼添加異常處理程序。 – jdweng

回答

0

有些事情要檢查

  1. 當你卸載了2.0版本,並使其完全卸載?檢查控制面板|服務以查看它是否被移除。重新啓動以確保正確卸載。
  2. 您是否使用4.0的正確installutil.exe?也正確的機器和應用程序的32位/ 64位版本?
  3. 當您從2切換到4時,它是否正確更改啓動對象?檢查項目屬性並確保選擇正確的啓動對象。
0

在這裏,我會做來解決問題的計算機上

  • 檢查應用程序事件日誌和錯誤日誌在您試圖啓動服務
  • 如果該服務的服務器上失敗的出頭了更好地獲得安裝在本地開發人員計算機上的服務以調試問題
  • 以管理員身份啓動服務控制檯,並確保啓動服務的帳戶具有有效的用戶名和密碼 enter image description here
  • 打開Windows服務在Visual Studio
  • 檢查提前編譯選項,看看它的.NET framework 4.0以及操作系統版本正在使用32位或64位 enter image description here
  • 清理和重建解決方案
  • 在OnStart方法中放置一個斷點並調試服務。如果服務在定時器上定期運行,則根據需要調整時間間隔,以便調試。有時我們需要附加一個流程
  • 如果服務在您的計算機上運行,​​而不使用遠程調試來處理服務,則可能有助於解決問題
  • 取消所有先前版本的服務並確保存在在一個時間點運行一個活動版本的服務
  • 卸載時,安裝服務或使用Visual Studio以管理員身份啓動服務,同時還要注意運行服務的用戶帳戶。