2014-04-25 4 views
1

데이터베이스에서 데이터를 읽는 창 서비스를 만들었습니다. 그러나 데이터베이스에서 데이터를 읽지 않습니다. 디버깅하려고하지만 발생하지 않습니다. 내가 eventviewer.However에 기록되지 아니 eventviewer.but 로그인을 사용하여 여러 로그를 작성했습니다, 윈도우 폼 응용 프로그램의 모든 코드 작업이 코드는Visual Studio 2010에서 Window 서비스를 디버깅하는 방법

eventLog1.WriteEntry("GApps Sync is Collecting parameters from GUI seting", System.Diagnostics.EventLogEntryType.Information); 
     var folderPath = Path.Combine(Environment.GetFolderPath(
     Environment.SpecialFolder.ApplicationData), "GAppsSync"); 
     if (!Directory.Exists(folderPath)) 
     { 
      eventLog1.WriteEntry("Please stop service and Run GUI Tool set all the syn parameter", System.Diagnostics.EventLogEntryType.Error);   
     } 
     path = Path.Combine(folderPath, "databaseFile.db3"); 
     FileInfo fileInfo = new FileInfo(path); 
     if (fileInfo.Exists) 
     { 
      eventLog1.WriteEntry("GApps Sync is getting parameters from GUI tool", System.Diagnostics.EventLogEntryType.Information); 
      try 
      { 
       using (SQLiteConnection con = new SQLiteConnection("data source=" + path)) 
       { 
        con.Open(); 
        SQLiteCommand cmdSyncPara = new SQLiteCommand("Select SyncInterval, CRMSetting,GoogleSetting,SyncOption From Synchroniszation",con); 
        SQLiteDataReader dataReader = cmdSyncPara.ExecuteReader(); 
        eventLog1.WriteEntry("GApps Sync is Reading database parameter:", System.Diagnostics.EventLogEntryType.Error); 
        while (dataReader.Read()) 
        { 
         SyncInterval = dataReader.GetString(0); 
         eventLog1.WriteEntry("GApps Sync is getting parameters from GUI tool Syncinterval:" + SyncInterval, System.Diagnostics.EventLogEntryType.Information); 
         CRMSetting = dataReader.GetString(1); 
         eventLog1.WriteEntry("GApps Sync is getting parameters from GUI tool CRMSetting:" + CRMSetting, System.Diagnostics.EventLogEntryType.Information); 

         GoogleSetting = dataReader.GetString(2); 
         SyncOption = dataReader.GetString(3); 
        } 
        eventLog1.WriteEntry("GApps Sync got GUI sync Options and Sync Interval parameters", System.Diagnostics.EventLogEntryType.Information); 
        SQLiteCommand cmdReadData = new SQLiteCommand("Select Enable, GmailId,GmailPassword,EmployeeAccount From SyncDataDetail",con); 
        SQLiteDataReader dataReaderDetail = cmdReadData.ExecuteReader(); 
        while (dataReaderDetail.Read()) 
        { 
         DataContainer dc = new DataContainer(); 
         dc.Enable = bool.Parse(dataReaderDetail.GetString(0)); 
         dc.EmailText = dataReaderDetail.GetString(1); 
         dc.Password = Decrypt(dataReaderDetail.GetString(2)); 
         dc.EmployeeAccount = dataReaderDetail.GetString(3); 
         ItemCollection.Add(dc); 
        } 
        eventLog1.WriteEntry("GApps Sync got GUI Save Account Mapping ", System.Diagnostics.EventLogEntryType.Information); 
       } 
      } 
      catch (Exception ex) 
      { 
       eventLog1.WriteEntry("GApps Sync Failed to get GUI Save Account Mapping ", System.Diagnostics.EventLogEntryType.Error); 
      } 
     }    
    } 
+2

이러한 일반적인 설명을 어떻게 도울 수 있습니까? 그것은 마치 '바퀴가 달려있어 엔진이 작동하지 않는다. 내 차는 달리지 않는다.'라고 말하는 것과 같다. ... –

+0

코드를 추가했다. 일부 로그를 작성하지 않습니다 –

답변

1

당신은 비주얼 스튜디오 디버거에 프로세스를 첨부해야합니다. 디버그 메뉴에서이 작업을 수행 할 수 있습니다. 그런 다음 연결을 클릭하여 처리합니다. 새 창이 표시되고 거기에서 프로세스를 선택하고 첨부를 클릭하십시오. 이제 Windows 서비스의 디버그 모드에 있습니다.

출처 : http://msdn.microsoft.com/en-us/library/7a50syb3(v=vs.110).aspx

0

윈도우 서비스가 당신의 program.cs을 편집 디버깅하는 가장 좋은 방법은 당신이 그것을 원하는 중단 점을 추가 디버그 모드에서 파일을 실행이

static class Program { 
    static void Main() { 

     #if DEBUG ServiceName myService = new ServiceName(); 
      myService.onDebug(); 
     #else ServiceBase[] ServicesToRun; 

      ServicesToRun = new ServiceBase[] 
      { 
       new ServiceName() 
      }; 

      ServiceBase.Run(ServicesToRun); 

     #endif 
    } 
} 

같은 파일. 다음과 같이

internal void TestStartupAndStop(string[] args) 
{ 
    this.OnStart(args); 
    Console.ReadLine(); 
    this.OnStop(); 
} 
는 Main 메서드를 다시 작성

:

static void Main(string[] args) 
     { 
      if (Environment.UserInteractive) 
      { 
       MyNewService service1 = new MyNewService(args); 
       service1.TestStartupAndStop(args); 
      } 
      else 
      { 
       // Put the body of your old Main method here. 
      } 
     } 

: MSDN에서

+0

코드를 형식화하여 읽을 수 있도록하십시오. –

0

은 (Debug Windows Service)

은 ONSTART과를 OnStop 방법을 실행하는 서비스에 메서드를 추가 참고 : 서비스에 대한 또 다른 생성자가 필요합니다. 예 :

public Service1(string[] args) 

인수를 전달하려면.

프로젝트 속성의 응용 프로그램 탭에서 출력 유형을 콘솔 응용 프로그램으로 설정하십시오. (이 단계를 잊지 마세요!)

디버깅 시작 (F5)을 선택하십시오.

콘솔 창을 팝업하고, onStart를 실행하고, 서비스를 종료하기 위해 콘솔 창에서 키를 치기를 참을성있게 기다립니다.

Windows 서비스로 프로그램을 다시 실행하려면 Windows 서비스 용으로 프로그램을 설치하고 시작하십시오. 이러한 변경 사항을 취소 할 필요는 없습니다.

관련 문제