13

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

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

例如

[标题]
2010-09-10 14:52:36.331 信息 Web.Global.Application_Start 开始
2010-09-10 14:52:37.409 信息 Web.Global.Session_Start Session.SessionID=xxqjvun2ce2yqsumq1hfoj45
[标题]
2010-09-10 14:53:10.028 信息 Web.Global.Application_Start 开始
2010-09-10 14:53:10.325 信息 Web.Global.Session_Start Session.SessionID=xxqjvun2ce2yqsumq1hfoj45

我在本地机器上运行它,在 IIS 5.1 下。该项目还使用 ASP.NET MVC,使用的 aspx 页面 URL 使用路由更改,使用 Phil Haack 网站上显示的技术

关于可能导致这种情况的任何建议?

4

4 回答 4

14

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

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

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

解决方法是将 IIS 中的旧虚拟目录设置为重定向到URL 设置为/NewVirtualDirectory$S$Q的 URL

于 2011-04-12T08:11:06.783 回答
3

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

于 2012-07-09T17:51:17.817 回答
3

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

于 2020-05-05T21:21:05.473 回答
1

在我经验丰富的(下班后研究和大量编码)中,来自

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

我从托管面板而不是 FTP (FileZilla) 中删除了文件管理,并且多个Application_Start事件触发消失了 :-) 问题的根本原因是连接到此 dll 的不可阻挡的 Quartz.Net 进程。

于 2016-12-19T22:05:55.737 回答