ASP.NET在每个请求上重新编译

时间:2016-05-10 09:01:11

标签: c# asp.net iis-8

我有一个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年的发展,我以前从未见过它,似乎没有任何押韵或理由。

更新:如果有其他人遇到此问题,请查看下面的答案以获取我的解决方案。

2 个答案:

答案 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查看所有内容。