我有一个用.Net 3.5(2.0 CLR)编写的旧ASP.NET应用程序在32位Windows 2003服务器上运行,该服务器上有IIS-6。我们最近不得不改变一些数据访问层部分,以便将来进行一些更改,然后从TFS部署它。我们最近进行了其他小调整的部署,并且msbuild文件与目标完全相同,因此除了一些编码之外没有其他更改。
当代码审查和提交编码更改时,我启动了一个成功的部署。我在开发服务器上打开了网站进行一些现场检查,然后将其交给测试人员开始进行更彻底的回归测试,一切看起来都很棒 - 没问题。
一个小时左右,当他们开始测试时,我得到一张网站只是一个白色屏幕的门票,甚至没有任何东西甚至从网络服务器回来作为页面的来源。事件查看器中的服务器上的任何日志中都没有显示任何内容,除了成功的页面请求之外,IIS日志中没有任何内容,请尝试其他一些操作。
所以,我再次从TFS部署网站,它加载得很好,我可以完美地执行很多操作,而不会看到白屏。日志看起来很好,所以我认为它是一个侥幸,继续我的任务。
然后机票又回来了,再次这样做了,死亡的白屏,我完全不知道为什么。
问题似乎是来自最后一个“实时”应用程序池的前一个程序集仍保留在“Temporary ASP.NET Files”目录中,并且该文件具有完全相同的名称,只是附加了“.delete” (即assemblyname.dll.delete)。这只是在每个应用程序池重新启动时循环。
所以,对于第一次运行,网站的dll将在那里,一切都会有效。可以说它是MyApplication_0001.dll。
在第二次运行时,MyApplication_0001.dll,MyApplication_0001.dll.delete和MyApplication_0002.dll将在那里。
第三次运行MyApplication002.dll,MyApplication002.dll.delete和MyApplication003.dll。
因此,模式是它保留最后一个,具有相同名称的空.delete文件和新的dll。
如果我删除了额外的文件,该网站将立即回来,因此运行时必须看到两个相同的命名空间/类/签名,并且无法找出哪个是正确的和阻塞 - 只是没有任何错误记录
有关要在应用程序/ iis /服务器级别进行配置检查的事项的任何想法吗?
2014-06-24 :确认这种情况发生在Windows 7 PC以及IIS 7.5在64位框架中的经典应用程序池上运行.Net 2.0。