2012-04-26 25 views
0

私はWindowsサービスを持っています。それは外部のクライアントに石鹸メッセージを送信する前に18秒ごとに私のデータベースを接続し、チェックします。 私は自分のコンピュータにサービスを正常にインストールしましたが、特に何もしていないし、サーバーログにエラーが発生していません。Windowsサービスがデータベースに接続していません

どこで間違っていたのですか?

更新

protected override void OnStart(string[] args) 
    { 
     timer.Elapsed += new ElapsedEventHandler(timer_Elapsed); 
     timer.Interval = 15000; 
     timer.Enabled = true; 
     timer.Start(); 
     eventLog1.WriteEntry("Windows Service 3 Started"); 
    } 

    protected override void OnStop() 
    { 
     eventLog1.WriteEntry("Windows Service 3 Stopped"); 

    } 

RunAPP()私は、ストアドプロシージャを介してデータベースに接続されている場所です。

私の問題についての洞察は素晴らしいでしょう!

private void RunApp() 
    { 

     p.Start(); 
     string connStr = ConfigurationManager.ConnectionStrings["bbsConnectionString"].ConnectionString; 
     try 
     { 
      SqlConnection Con = new SqlConnection(connStr); 
      Con.Open(); 
      SqlCommand cmd = new SqlCommand("AvailableChanges", Con); 
      cmd.CommandType = CommandType.StoredProcedure; 
      SqlParameter NewSysChangeVersionParam = new SqlParameter("@NewSysChangeVersion", SqlDbType.Int); 
      NewSysChangeVersion.Value = (object)NewSysChangeVersion ?? DBNull.Value; 
      NewSysChangeVersion.Direction = ParameterDirection.InputOutput; 
      NewSysChangeVersion.SqlDbType = SqlDbType.BigInt; 
      SqlDataReader sdr = cmd.ExecuteReader(); 
      int sdrreader = sdr.FieldCount; 
      InventoryPushSubscriptionRecord rec = new InventoryPushSubscriptionRecord(); 


      while (sdr.Read()) 
      { 

       inrec.InventoryPushSubscriptionId = sdr.GetInt32(0); 
       inrec.SysChangeVersion = sdr.IsDBNull(1) ? (long?)null : sdr.GetInt64(1); 
       inrec.InvDate = sdr.GetDateTime(2); 
       inrec.ResortId = sdr.GetInt32(3); 
       inrec.RoomType = sdr.GetString(4); 
       inrec.InvCount = sdr.GetInt32(5); 
       inrec.ResortName = sdr.GetString(6); 


       Int64 NewSysChangeVersion; 
       NewSysChangeVersion = Convert.ToInt64(rec.LastSysChangeVersion); 
       int ResortId; 
       ResortId = inrec.ResortId; 
       string RoomType; 
       RoomType = inrec.RoomType; 
       int avail = inrec.InvCount; 
       DateTime frodte = inrec.InvDate; 
       DateTime todte = inrec.InvDate; 
       int NoofRatePackages = sdrreader; 
       Int32 InventoryPushSubscriptionId; 
       InventoryPushSubscriptionId = inrec.InventoryPushSubscriptionId; 
       Int64 NewLastSysChangeVersion; 
       NewLastSysChangeVersion = Convert.ToInt64(inrec.SysChangeVersion); 
       if (NewSysChangeVersion != null) 
       { 
        sendUpdate(NewSysChangeVersion, ResortId, RoomType, avail, frodte, todte, NoofRatePackages, InventoryPushSubscriptionId, NewLastSysChangeVersion); 
       } 
      } 

      // sdr.Close(); 
      // sdr.Dispose(); 

     } 

     catch (Exception ex) 
     { 

更新 eventLog1.WriteEntry( "例外")。 throw; } }

+1

私は、障害が発生することがありますので、あなたが 'RunApp'のコンテンツを共有する必要がありますコミュニティから任意の洞察力を得るためにそれを疑います。 'RunApp'の例外により、あなたのログが書き込まれなくなる可能性があります... –

+0

イベントログには2つのメッセージがありますか?もしそうなら、あなたは間違ったコードを投稿しました。あなたがサービスを開始したことがない場合、または間違ったコードを投稿した場合。 –

+0

[OK]しかし、最後に私の質問に私のコードを配置したとき、私はそれが長すぎると誰もそれをスクロールしたいと言われた....コードを含めるように私の質問を編集する、@トニーホプキンソン私のイベントログショー「Windowsサービス3が起動し、アプリケーションを実行しています」とそれ以降は何も表示されません。 – user1270384

答えて

0

私の例外はアドバイスされました。

キャッチ(例外の例) {

  eventLog1.WriteEntry(ex.Message); 
      eventLog1.WriteEntry(ex.StackTrace); 
      throw; 

     } 
関連する問題