最近在做一个新手卡系统,我在Application_Start 中放了一个方法,本以为这个是应用程序启动时才会执行,也就是说至少不会访问一次ASPX就执行一次。。。。。。事实是每访问一个ASPX页面,他就被执行了一次。。。导致严重后果。我在Application_Start 中放的方法是自动处理业务数据的,可以看做是没有定时的定时任务,执行时会100批次,每次1000条处理数据库数据(每批次一个事务,事务提交立即执行),结果有些数据被更新了2次,3次。。。。。(也就是说前面的方法被调用时还没执行完,接着同样的数据被另一个线程调用方法再次执行了)与老人头相关,后果很严重。。。。
在本机测试时一切正常(单用户),在网站上实际运行时就会出现这种情况,原因只有一个,就是Application_Start 很可能是每访问一个页面就执行了一次。。。监测的启动情况如下图:
看来只能用WINDOWS服务或者命令行计划任务来处理这类问题了。。。。