我有一个ASP.NET Webforms编译的站点,可以在我的本地计算机上完美运行。一旦站点被推送到实时服务器(在Windows Server 2012上运行IIS8的10台服务器的银行),该站点将在每次请求时重新编译。
如果我转到临时ASP.NET文件目录,那么该站点中的所有用户控件都有App_Web dll以及所有二进制文件的.delete文件,我认为这会导致appdomain每次都重新启动。 / p>
App_Web_course.aspx.cdcab7d2.ijbbuqi7.dll
App_Web_course.aspx.cdcab7d2.ijbbuqi7.dll.delete
它偶尔会在某些服务器上运行正常,当我查看这些服务器上的临时.NET文件时,.delete文件就不存在了。
我把头发拉了出来,经过17年的发展,我以前从未见过它,似乎没有任何押韵或理由。
更新:如果有其他人遇到此问题,请查看下面的答案以获取我的解决方案。
答案 0 :(得分:2)
我有问题的更新和解决方案。
在发布原始帖子时,我忽略了文件位于SMB网络共享上。由于ASP.NET的fcnMode,这就是这种不断重新编译的原因。
进程监视器通过w3wp.exe向“FileChangeNotify”显示了数千个请求,当它们访问诸如“bin”之类的关键目录时,会导致重新编译和应用程序重启。
幸运的是,有一个单行解决方案。在项目的web.config中,更改以下行以包含以下属性:
<httpRuntime fcnMode="Disabled" />
这将阻止ASP.NET扫描您的网络目录以进行持续的文件更改。
答案 1 :(得分:1)
导致重新编译的可能原因。
web.config
app_offline.htm
文件。.aspx
或.aspx.cs
文件App_Code
文件夹aspx
个文件。如果您无法在代码中找到或不知道其他库的用途,您可以使用Process Monitor查看所有内容。