我知道在 ASP.NET Web 应用程序中,更改文件bin
夹中的 DLL 文件会导致应用程序回收。
但我想知道,正如主题所暗示的那样,是否有任何文件更改会导致这种行为?此方案中是否包含简单的文本文件?
那么子文件夹到bin
文件夹呢?以及它们的内容?
我知道我可以自己尝试一下,但更重要的是,我正在为此寻找适当的文档。
我知道在 ASP.NET Web 应用程序中,更改文件bin
夹中的 DLL 文件会导致应用程序回收。
但我想知道,正如主题所暗示的那样,是否有任何文件更改会导致这种行为?此方案中是否包含简单的文本文件?
那么子文件夹到bin
文件夹呢?以及它们的内容?
我知道我可以自己尝试一下,但更重要的是,我正在为此寻找适当的文档。
首先,我无法提供官方文档的链接。但是从我读到的 bin 文件夹(包括子文件夹)中的每一个变化都会导致 IIS 回收应用程序域。
突然的应用程序池回收
应用程序的 BIN 目录中的任何修改
在任何配置文件中进行更改,例如 Web.config 或其他文件(如果您的应用程序中有任何特定的配置文件,例如在名为 App_Config 的目录中)。
在 APP_CODE 目录中的源代码文件中进行修改。这可能会更改任何源代码文件,或者从该目录添加或删除文件。
在 Global.asax 文件中进行更改
在 Machine.config 文件中进行更改。
在 Web 应用程序的根目录中进行任何修改。这意味着动态创建文件/子目录可以导致应用程序池回收。
修改 App_WebReferences 目录的 Web 服务引用。
修改根目录中任意目录的安全设置。(例如为每个人或任何其他特定用户或用户组指定读取安全权限。)
这里有一些阅读:
不,更新 bin 文件夹中的 dll 文件不会导致回收。至少在 IIS 10 及更高版本上没有 .NET 4.7
这是当 IIS 启动一个新的w3wp
进程实例并且旧的实例被“礼貌地”终止时(在完成所有注册的请求和后台任务之后IRegisteredObject
)
ASP.NET 进行热重载:它检测到更新并从那时起将新版本的 .dll 用于新页面请求。即重新加载“应用程序域”。但这发生在同一个w3wp
过程中。(来源)
我刚刚在 IIS 10 windows 2016 机器上检查了这一点:启动任务管理器并替换主 .dll 文件 -w3wp
进程继续运行,没有任何反应。