Application_Start 访问任意ASPX 都会启动,并非仅仅是IIS启动(应用程序启动时才执行)

本文描述了一个ASP.NET项目中Application_Start方法的误用案例,在多用户环境下该方法并非如预期只在应用程序启动时执行一次,而是每次访问ASPX页面时都会触发执行,导致数据处理逻辑重复执行并引发数据一致性问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在做一个新手卡系统,我在Application_Start 中放了一个方法,本以为这个是应用程序启动时才会执行,也就是说至少不会访问一次ASPX就执行一次。。。。。。事实是每访问一个ASPX页面,他就被执行了一次。。。导致严重后果。我在Application_Start 中放的方法是自动处理业务数据的,可以看做是没有定时的定时任务,执行时会100批次,每次1000条处理数据库数据(每批次一个事务,事务提交立即执行),结果有些数据被更新了2次,3次。。。。。(也就是说前面的方法被调用时还没执行完,接着同样的数据被另一个线程调用方法再次执行了)与老人头相关,后果很严重。。。。


在本机测试时一切正常(单用户),在网站上实际运行时就会出现这种情况,原因只有一个,就是Application_Start 很可能是每访问一个页面就执行了一次。。。监测的启动情况如下图:




看来只能用WINDOWS服务或者命令行计划任务来处理这类问题了。。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值