bin文件夹中的任何文件中的任何更改是否会导致ASP.NET Web应用程序中的应用程

时间:2012-03-21 10:35:09

标签: asp.net web-applications bin application-restart

我知道在ASP.NET Web应用程序中,更改位于bin文件夹中的DLL文件会导致应用程序回收。

但我想,正如主题所暗示的那样,任何文件更改是否会导致此类行为?这个场景中是否包含简单的文本文件?

那么bin文件夹的子文件夹呢?他们的内容?

我知道我可以自己尝试一下,但更重要的是,我正在为此寻找合适的文档。

2 个答案:

答案 0 :(得分:38)

首先,我无法提供官方文档的链接。但是从我读过的 bin文件夹(包括子文件夹)中的每次更改都将导致IIS回收应用程序域。

突然的应用程序池回收

  1. 应用程序的BIN目录中的任何修改

  2. 在任何配置文件中进行更改,例如Web.config或其他配置文件(如果您的应用程序中有任何特定的配置文件,请在名为App_Config的目录中说明。)

  3. 在APP_CODE目录中的源代码文件中进行修改。这可能会更改任何源代码文件,或添加或删除此目录中的文件。

  4. 在Global.asax文件中进行更改

  5. 在Machine.config文件中进行更改。

  6. 在Web应用程序的根目录中进行任何修改。这意味着即时创建文件/子目录可能会导致应用程序池回收。

  7. 对App_WebReferences目录的Web服务引用的修改。

  8. 修改根目录中任何目录的安全设置。 (例如为每个人或任何其他特定用户或用户组指定读取安全权限。)

  9. 这里有一些阅读:

    1. What causes an application pool in IIS to recycle?
    2. http://christopherdeweese.com/blog2/post/beware-writing-to-the-bin-folder-in-iis-hosted-services
    3. What does an IISReset do?
    4. http://www.iis.net/ConfigReference/system.applicationHost/applicationPools/add/recycling
    5. Managing, Tuning, and Configuring Application Pools in IIS 7.0
    6. http://varunvns.wordpress.com/2011/07/04/application-pool-restarts/

答案 1 :(得分:1)

NOPE,更新bin文件夹中的dll文件不会导致回收。至少不是在IIS 10及更高版本上使用.NET 4.7

首先,什么是“回收”?

这是启动w3wp流程的新实例,而旧实例被“礼貌地”终止(在完成向IRegisteredObject注册的所有请求和后台任务之后)

在/ bin中更新文件时会发生什么?

ASP.NET进行热重载:它检测更新并从此开始使用.dll的新版本进行新页面请求。但这是在同一w3wp过程中发生的。 (source

我刚刚在IIS 10 Windows 2016计算机上进行了检查:启动了任务管理器并重新放置了主.dll文件-该进程一直在运行,什么也没发生。