2016-06-20 2 views
0

これはサービス開始コードとクラスです。それは長いですが、問題はデータベースとentityFrameWorkセクションだけで他の行を省略してください。私は、データベースからデータを読みたい考える:WindowsサービスアプリケーションでentityFrameWorkを使用すると、潜在的なプロバイダがエラーを開けませんでした。

私のサービス開始コード:エラーが発生した場合、あなたが見ることができるよう

public class ReadPolling 
{ 
    public static webtccUsersEntities db; 
    public static void Read() 
    { 
     try 
     { 
      byte[] readBuffer = new byte[1024]; 
      while (true) 
      { 
        writeToDb(readBuffer); 
        System.IO.File.WriteAllText("D:\\1.txt", "read-write"); 
      } 

     } 
     catch (Exception ex) 
     { 
      System.IO.File.WriteAllText("D:\\1.txt", ex.Message); 
     } 

    } 
    public static void writeToDb(byte[] userId) 
    { 
     db = new webtccUsersEntities(); 
     string _userId="";foreach(byte item in userId) 
     { 
      if(item!=0 || item!=40) 
      _userId += (39 - item).ToString(); 
     } 
     _userId = "0009544023"; 
     Time time; 
     if(db.Times.Where(i=>i.userId==_userId).Count()>0)//User has at least one time 
     { 
      time = db.Times.Where(i => i.userId == _userId).OrderBy(i => i.dayDate).OrderBy(i=>i.inTime).Last();//last time 

      if (time.dayDate == DateTime.Today)//today time 
      { 
       if(time.outTime==null)//wants an out for today 
       { 
        time.outTime = DateTime.Now.ToLocalTime();//an out for today 
        db.SaveChanges(); 
       } 
       else//wants a new in/out for today 
       { 
        Time newTime = new Time();newTime = db.Times.Create(); newTime.userId = _userId; newTime.dayDate = DateTime.Now.Date; newTime.inTime = DateTime.Now.ToLocalTime(); 
        db.Times.Add(newTime);db.SaveChanges(); 
       } 
      } 
      else//not today time 
      { 
       //new in for today 
       Time newTime = new Time();newTime = db.Times.Create();newTime.dayDate = DateTime.Today;newTime.inTime = DateTime.Now.ToLocalTime();newTime.userId = _userId; 
       db.Times.Add(newTime);db.SaveChanges(); 
      } 

     } 
     else//user first time 
     { 
      Time firstTime = new Time(); 
      firstTime = db.Times.Create(); 
      firstTime.userId = _userId;firstTime.dayDate = DateTime.Now.Date;firstTime.inTime = DateTime.Now.ToLocalTime(); 
      db.Times.Add(firstTime);db.SaveChanges(); 
     } 


    } 
} 

protected override void OnStart(string[] args) 
    { 
     System.Threading.Thread newThread = new System.Threading.Thread(new System.Threading.ThreadStart(ReadPolling.Read)); 
     newThread.Start(); 
    } 

これは私のReadPolling.csファイルですドライブ "D:\"の "1.txt"というファイルに書き込みます。だから私がサービスを開始するとき、私は自分のテキストファイルを開き、 "NT AUTHORITY \ LOCAL SERVICE 'というユーザのためにOpen.Loginが失敗したときに基礎となるプロバイダが失敗したことを確認します。" 問題の原因を教えてください。あなたにも、それはあなたの.configファイルに無効なまたは不足している接続文字列のような単純なものができ、実際の接続エラーを示して内部例外をログに記録する必要があり

+0

は、内部例外はありますか? – bolt19

+0

@ bolt19はい、私は –

+0

@NeerPriv noを追加しました。それは私のコンピュータで実行されているWindowsサービスです: –

答えて

1

...

+0

更新された質問。 –

+0

あなたの答えは答えではありませんが、問題を解決するのに役立ちました。あなたの答えを削除し、それをコメントとして書く。ありがとう –

関連する問題