触发多个Application_Start事件

时间:2010-09-10 13:59:21

标签: asp.net application-start

我正在调试一个缓慢加载初始页面的ASP.NET 2.0应用程序。

通过添加日志记录,我发现Application_Start事件在启动时触发两次,两个事件之间有短暂的延迟。 Session_Start事件也会触发两次,具有相同的会话ID值。

e.g。

[Header]
2010-09-10 14:52:36.331 INFO  Web.Global.Application_Start          START
2010-09-10 14:52:37.409 INFO  Web.Global.Session_Start              Session.SessionID=xxqjvun2ce2yqsumq1hfoj45
[Header]
2010-09-10 14:53:10.028 INFO  Web.Global.Application_Start          START
2010-09-10 14:53:10.325 INFO  Web.Global.Session_Start              Session.SessionID=xxqjvun2ce2yqsumq1hfoj45

我在IIS 5.1下的本地计算机上运行它。该项目还使用ASP.NET MVC,使用的路由器using the technique shown on Phil Haack's site更改了所使用的aspx页面URL。

有关可能导致此问题的任何建议吗?

4 个答案:

答案 0 :(得分:12)

我们最终意识到这取决于我们的IIS配置。

前段时间,我们决定重命名用于此网站的虚拟目录。这是通过添加一个全新的虚拟目录配置完成的,将前一个配置保留在原位。基本上我们有两个虚拟目录指向同一个ASP.NET应用程序!

从未完成到新虚拟目录的迁移,因此网站的某些部分仍然引用了旧虚拟目录。因此有两个Application_Start事件......

修复方法是将IIS中的旧虚拟目录更改为重定向到URL ,并将URL设置为 / NewVirtualDirectory $ S $ Q < / p>

答案 1 :(得分:3)

我们遇到类似的情况只是发现这是因为我们已经完成了一个程序集重命名并且有两个相同代码的副本引用了该程序集,versionA.dll和versionB.dll。因此,它被调用了两次!

答案 2 :(得分:2)

花了4天后,我终于找到了问题所在! 如果更改 Bin 目录中的任何文件,则IIS会重置您的应用程序和应用程序池。 对我来说,是因为我的程序以前在Bin目录中写入了log.txt文件。 我更改了日志文件路径,问题已消失!

答案 3 :(得分:0)

来自

的经验丰富的(课后研究和大量编码)
  

x64文件夹中未删除的SQLite.Interop.dll

我通过文件管理从主机面板而不是FTP(FileZilla)删除了多个Application_Start事件被解雇了:-)问题的根本原因是不可阻挡的Quartz.Net进程连接到这个dll。