2010-10-06 54 views
1

所以我有一個C#的Windows服務,在一些沒有互聯網接入的系統將無法啓動。它嘗試啓動,但在服務啓動之前超時。我無法在任何開發環境中重現此問題,但在其他系統(通常是w2k3)上已多次查看它。windows服務導致系統沒有互聯網訪問根證書更新

當我把我的服務進入調試模式時,我所做的第一件事就是在本地pc上創建一個日誌文件,但是這個文件永遠不會被創建,所以我相信OnStart代碼甚至永遠不會被調用。

在一個系統中,我們看到了一個事件日誌條目導致我們這個知識庫文章:http://support.microsoft.com/kb/317541

因此,通過停止根證書更新服務或設備連接到互聯網,我們的服務下面的文章現在開始。另一個有趣的事情是,我們有3個服務都以幾乎相同的代碼開始,但它始終是3箇中的特定一個,無法啓動。這裏是我們的代碼OnStart方法:

if (args.Length > 0) 
     { 
      if (args[0].ToLower().Equals("debug")) 
      { 
       string AppLog = System.Reflection.Assembly.GetExecutingAssembly().GetName().Name; 

       string locallogpath = Settings.Settings.ServiceLogFileLocation.ToString(); 
       if (!Directory.Exists(locallogpath)) 
       { 
        Directory.CreateDirectory(locallogpath); 
       } 
       LogFileName = Path.Combine(locallogpath, AppLog + ".htm"); 
       try 
       { 
        _logFile = new StreamWriter(new FileStream(LogFileName, System.IO.FileMode.Create)); 

        _logFile.WriteLine(htmlHeader + "<span class=lognormal>Service Started!</span><br>"); 
        _logFile.Close(); 
       } 
       catch { } 

       IsDebug = true; 
      } 
     } 

我的問題是什麼可能我們可能會做會導致發生,因此在沒有互聯網連接可用失敗的根證書更新?

回答

1

是否有任何證書籤署的程序集參與運行此服務?這些可能會觸發一系列事件來驗證簽名,這很可能導致Windows需要檢查根證書的狀態。

我的猜測是,如果您需要在未連接的服務器上運行受影響的服務,唯一的選擇是保持根證書更新服務停止。

我猜你的日誌代碼與它無關。

+0

感謝您的信息......我不認爲我們的任何程序集都已簽名,但我必須檢查確定。 – BigTundra 2010-10-08 13:31:40

+0

我檢查過,我們確實在簽署我們的一個組件。這似乎是問題。謝謝! – BigTundra 2010-10-13 00:04:12

+0

非常好!很高興我能幫上忙;我知道我討厭有這樣的事情,我不知道他們爲什麼發生這種事情! – 2010-10-13 03:41:25

相關問題