【问题标题】:ASP.NET recompiles on every requestASP.NET 在每个请求上重新编译
【发布时间】:2019-01-05 05:07:29
【问题描述】:

我有一个 ASP.NET Webforms 编译的站点,可以在我的本地计算机上完美运行。一旦站点被推送到实时服务器(在 windows server 2012 上运行 IIS8 的一组 10 台服务器),站点将在每次请求时重新编译。

如果我转到临时 ASP.NET 文件目录,则站点中所有用户控件的 App_Web dll 以及所有二进制文件的 .delete 文件,这就是我认为导致 appdomain 每次重新启动的原因。

App_Web_course.aspx.cdcab7d2.ijbbuqi7.dll
App_Web_course.aspx.cdcab7d2.ijbbuqi7.dll.delete

它偶尔在某些服务器上运行正常,当我查看这些服务器上的临时 .NET 文件时,.delete 文件不存在。

我正在拔头发,在 17 年的开发中,我以前从未见过这种情况,而且似乎没有押韵或理由。

更新:如果其他人遇到这种情况,请查看下面的答案以了解我的解决方案。

【问题讨论】:

标签: c# asp.net iis-8


【解决方案1】:

我有问题的更新和解决方案。

在发布原始帖子时,我忽略了这些文件位于 SMB 网络共享上。这是由于 ASP.NET 的 fcnMode 导致不断重新编译的原因。

进程监视器通过 w3wp.exe 显示数千个“FileChangeNotify”请求,当点击“bin”等关键目录时,会导致重新编译和应用程序重新启动。

幸运的是,有一个单行修复程序。在项目的 web.config(s) 中,更改以下行以包含以下属性:

<httpRuntime fcnMode="Disabled" />

这将阻止 ASP.NET 扫描您的网络目录以查找持续的文件更改。

【讨论】:

    【解决方案2】:

    导致重新编译的可能原因。

    • 您更新web.config
    • 您在根目录上创建/删除app_offline.htm 文件。
    • 您创建/修改任何.aspx.aspx.cs 文件
    • 您在App_Code 文件夹中创建/修改文件
    • 您让一些上传文件夹无人看管,用户上传aspx 文件。
    • 您在计算机上的时间/日期是错误的(几年前)

    如果您无法在代码中找到它或不知道其他库的作用,您可以使用Process Monitor 查看所有这些发生的情况。

    【讨论】:

    • 我可以确认我没有做这些。该站点已编译,因此所有 aspx.cs 文件都在 dll 中。
    • @DavidRabbich 使用进程监视器查看发生了什么...发生了什么变化并导致重新编译。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-09
    • 2010-12-29
    相关资源
    最近更新 更多