2016-03-04 117 views
-1

如果我作爲控制檯應用程序進行調試或運行,我的Windows服務將正常運行,但如果安裝,它將顯示在服務中,但不會運行。請幫助Windows服務無法正常運行c#

這是主要的功能

static void main(){ 

if (Environment.UserInteractive) 
      { 

       string path = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\Service1"; 
       // Determine whether the directory exists. 
       if (!Directory.Exists(path)) 
       { 
        DirectoryInfo di = Directory.CreateDirectory(path); 
        //di.Delete(); 
       } 




       StreamWriter sw = new StreamWriter(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\Service1\\program.txt", true); 
       sw.WriteLine(DateTime.Now.ToString() + " : Here if\n"); 
       //  sw.WriteLine("userprofile " + Environment.GetFolderPath(Environment.SpecialFolder.UserProfile) + " : "); 
       // sw.WriteLine("application data " + Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + " : "); 
       sw.Flush(); 
       sw.Close(); 

       Console.WriteLine("here1"); 
       Service1 service1 = new Service1(); 
       string[] args = { "Kun", "Singh" }; 
       service1.TestStartupAndStop(args); 
      } 
      else 
      { 
       string path = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\Service1"; 
       // Determine whether the directory exists. 
       if (!Directory.Exists(path)) 
       { 
        DirectoryInfo di = Directory.CreateDirectory(path); 
        //di.Delete(); 
       } 




       StreamWriter sw = new StreamWriter(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\Service1\\program.txt", true); 
       sw.WriteLine(DateTime.Now.ToString() + " : Here else\n"); 
      //  sw.WriteLine("userprofile " + Environment.GetFolderPath(Environment.SpecialFolder.UserProfile) + " : "); 
      // sw.WriteLine("application data " + Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + " : "); 
       sw.Flush(); 
       sw.Close(); 





       Console.WriteLine("here2"); 
       // Put the body of your old Main method here. 
       ServiceBase[] ServicesToRun; 
       ServicesToRun = new ServiceBase[] 
       { 
       new Service1() 
       }; 
       ServiceBase.Run(ServicesToRun); 


       // RunAsync().Wait(); 
       Service1 myServ = new Service1(); 
       myServ.write("hello bb"); 
       Console.Read(); 
      } 
+0

您確定該服務正在運行嗎?轉到運行並輸入Services.msc,按回車鍵查看所有正在運行的服務。 –

+0

它的運行只有我甚至嘗試重新啓動....代碼很好,大多在調試模式下,所有文件都被寫入,並且DB工作...但是如果使用installutil.exe,它會安裝但沒有任何反應....我不' t什麼樣的問題,它早些時候運行在示例程序....是否有任何方式調試seeply –

+0

我甚至嘗試過 [有條件的(「DEBUG_SERVICE」)] private static void DebugMode() { Debugger.Break(); }其工作在調試模式 –

回答

2

魔法門因爲Environment.UserInteractive是返回false。您正在運行一項服務,這意味着沒有用戶界面。見Environment.UserInteractive Property

的UserInteractive財產報告虛假的Windows進程或 服務如IIS,沒有用戶界面中運行。如果此屬性 爲假,請不要顯示模式對話框或消息框,因爲 沒有用於與用戶交互的圖形用戶界面。

我建議嘗試更改的條件,如果(!Environment.UserInteractive)

+0

我不知道,但我增加了新的WIX安裝在相同的解決方案,現在一切正常,完美 –

0

我只是做了一個新的設置維克斯,現在它的工作,雖然有第二個問題...我有一些參考我Windows服務項目,我如何將它們包含在安裝程序中,因爲我在安裝和運行時,我有說xxx.dll丟失的日誌文件

我有以下參考 - > jose-jwt.dll,實體框架..

那麼我該如何安裝參考文件