ASP.NET 根据每个请求重新编译
ASP.NET recompiles on every request
我有一个 ASP.NET Webforms 编译站点,可以在我的本地机器上完美运行。一旦网站被推送到实时服务器(运行ning IIS8 在 windows 服务器 2012 上的一组 10 台服务器),该网站将根据每个请求重新编译。
如果我转到临时 ASP.NET 文件目录,站点中所有用户控件都有 App_Web dll 以及所有二进制文件的 .delete 文件,我认为这是造成的每次都要重新启动的应用程序域。
App_Web_course.aspx.cdcab7d2.ijbbuqi7.dll
App_Web_course.aspx.cdcab7d2.ijbbuqi7.dll.delete
它偶尔 运行 在某些服务器上正常,当我查看这些服务器上的临时 .NET 文件时,.delete 文件不存在。
我正在拔头发,在 17 年的开发中,我以前从未见过这种情况,而且似乎没有任何韵律或原因。
更新:如果其他人遇到此问题,请查看下面的答案以了解我的解决方案。
可能导致重新编译的原因。
- 你更新
web.config
- 您 create/delete 根目录下的
app_offline.htm
文件。
- 您create/modify任何
.aspx
或.aspx.cs
文件
- 您在
App_Code
文件夹中 create/modify 个文件
- 您让一些上传文件夹无人看管,用户上传
aspx
个文件。
- 你time/date在电脑上写错了(回头几年)
如果您无法在代码中找到它或不知道其他库的功能,您可以使用 Process Monitor 查看发生了什么。
我有问题的更新和解决方案。
在最初 post 时,我没有注意到文件位于 SMB 网络共享上。由于 ASP.NET.
的 fcnMode,这一直是不断重新编译的原因
Process Monitor 通过 w3wp.exe 为 "FileChangeNotify" 显示了数千个请求,当到达关键目录(例如 "bin" 时,它会导致重新编译和应用程序重新启动。
幸运的是,有一行可以解决这个问题。在项目的 web.config(s) 中,更改以下行以包含以下属性:
<httpRuntime fcnMode="Disabled" />
这将阻止 ASP.NET 扫描您的网络目录以查找不断变化的文件。
我有一个 ASP.NET Webforms 编译站点,可以在我的本地机器上完美运行。一旦网站被推送到实时服务器(运行ning IIS8 在 windows 服务器 2012 上的一组 10 台服务器),该网站将根据每个请求重新编译。
如果我转到临时 ASP.NET 文件目录,站点中所有用户控件都有 App_Web dll 以及所有二进制文件的 .delete 文件,我认为这是造成的每次都要重新启动的应用程序域。
App_Web_course.aspx.cdcab7d2.ijbbuqi7.dll
App_Web_course.aspx.cdcab7d2.ijbbuqi7.dll.delete
它偶尔 运行 在某些服务器上正常,当我查看这些服务器上的临时 .NET 文件时,.delete 文件不存在。
我正在拔头发,在 17 年的开发中,我以前从未见过这种情况,而且似乎没有任何韵律或原因。
更新:如果其他人遇到此问题,请查看下面的答案以了解我的解决方案。
可能导致重新编译的原因。
- 你更新
web.config
- 您 create/delete 根目录下的
app_offline.htm
文件。 - 您create/modify任何
.aspx
或.aspx.cs
文件 - 您在
App_Code
文件夹中 create/modify 个文件 - 您让一些上传文件夹无人看管,用户上传
aspx
个文件。 - 你time/date在电脑上写错了(回头几年)
如果您无法在代码中找到它或不知道其他库的功能,您可以使用 Process Monitor 查看发生了什么。
我有问题的更新和解决方案。
在最初 post 时,我没有注意到文件位于 SMB 网络共享上。由于 ASP.NET.
的 fcnMode,这一直是不断重新编译的原因Process Monitor 通过 w3wp.exe 为 "FileChangeNotify" 显示了数千个请求,当到达关键目录(例如 "bin" 时,它会导致重新编译和应用程序重新启动。
幸运的是,有一行可以解决这个问题。在项目的 web.config(s) 中,更改以下行以包含以下属性:
<httpRuntime fcnMode="Disabled" />
这将阻止 ASP.NET 扫描您的网络目录以查找不断变化的文件。