求大神帮助windows服务的net runtime异常导致application error然后服务停止

asddjw 2015-02-20 11:45:14
 Thread th = new Thread(() =>
{
using (HLERPEntities db = new HLERPEntities())
{
DbEntityEntry<Log> entry = null;
//循环运行
while (true)
{
//1.0 同步订单
//1.1 获取所有accountId,根据accountId调用ebayTool方法同步订单
//ebay的platformId是1
var listAccount = db.Accounts.Where(a => a.platformId == 1).ToList();
for (int i = 0; i < listAccount.Count; i++)
{
int accountId = listAccount[i].id;

eBayTool tool = new eBayTool();
DateTime st = DateTime.Now.AddDays(-2);
DateTime et = DateTime.Now.AddDays(1);
try
{
tool.GetOrders(accountId, st, et);
}
catch (Exception e)
{
Log log = new Log();
log.controller = "GetOrders";
log.action = "Ebay";
log.msg = e.Message;
log.data = e.Data.ToString();
log.time = DateTime.Now;
entry = db.Entry<Log>(log);
entry.State = System.Data.EntityState.Added;
db.SaveChanges();
}

} operation.CountHalfMonthTotal();

//5.0 线程休眠60分钟
Thread.Sleep(3600000);

}
}
});

th.IsBackground = true;
th.Start();


异常内容是从传输流收到意外的 EOF 或 0 个字节。System.Collections.ListDictionaryInternal
事件有两个

第一个是net runtime 错误
- <Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
- <System>
<Provider Name=".NET Runtime" />
<EventID Qualifiers="0">1026</EventID>
<Level>2</Level>
<Task>0</Task>
<Keywords>0x80000000000000</Keywords>
<TimeCreated SystemTime="2015-02-17T08:14:37.000000000Z" />
<EventRecordID>13607</EventRecordID>
<Channel>Application</Channel>
<Computer>WIN-92S1PMFFM0K</Computer>
<Security />
</System>
- <EventData>
<Data>应用程序: GetOrders.exe Framework 版本: v4.0.30319 说明: 由于未经处理的异常,进程终止。异常信息: System.Data.Entity.Validation.DbEntityValidationException 堆栈: 在 System.Data.Entity.Internal.InternalContext.SaveChanges() 在 System.Data.Entity.Internal.LazyInternalContext.SaveChanges() 在 System.Data.Entity.DbContext.SaveChanges() 在 GetOrders.Service1.<OnStart>b__0() 在 System.Threading.ThreadHelper.ThreadStart_Context(System.Object) 在 System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean) 在 System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean) 在 System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object) 在 System.Threading.ThreadHelper.ThreadStart()</Data>
</EventData>
</Event>


第二个是application err


大神们,为什么这个异常捕获了记录到数据库了,windows 服务还是停止了,而且服务管理器设置的30分钟后自动重启也没有效果;但是我手动点任务管理器启动又可以了。

是net runtime 哪里出问题了,谢谢!有什么解决办法。

...全文
577 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
宝_爸 2015-02-20
  • 打赏
  • 举报
回复
应用程序: GetOrders.exe Framework 版本: v4.0.30319 说明: 由于未经处理的异常,进程终止。 异常信息: System.Data.Entity.Validation.DbEntityValidationException 堆栈: 在 System.Data.Entity.Internal.InternalContext.SaveChanges() 在 System.Data.Entity.Internal.LazyInternalContext.SaveChanges() 在 System.Data.Entity.DbContext.SaveChanges() 。。。。 看着像存数据库时出问题了,也就是你catch内又出Exception了。
  • 打赏
  • 举报
回复
引用 楼主 asddjw 的回复:
为什么这个异常捕获了记录到数据库了,windows 服务还是停止了
你确定你本来想真正记录的 ebay 发来的错误解释信息记录到数据库了吗? 不要把代码随便放到 catch 里边。你应该大量测试,让bug今早重现,改好了代码的bug再上线。

17,740

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 .NET Framework
社区管理员
  • .NET Framework社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧