时间:2021-07-01 10:21:17 帮助过:18人阅读
- <br>/// <summary> <br>/// Stops the ASP.NET AppDomain being restarted (which clears <br>/// Session state, Cache etc.) whenever a folder is deleted. <br>/// </summary> <br>public class StopAppDomainRestartOnFolderDeleteModule : IHttpModule <br>{ <br>private static bool DisableFCNs = false; <br>public void Init(HttpApplication context) <br>{ <br>if (DisableFCNs) return; <br>PropertyInfo p = typeof(HttpRuntime).GetProperty("FileChangesMonitor", BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Static); <br>object o = p.GetValue(null, null); <br>FieldInfo f = o.GetType().GetField("_dirMonSubdirs", BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.IgnoreCase); <br>object monitor = f.GetValue(o); <br>MethodInfo m = monitor.GetType().GetMethod("StopMonitoring", BindingFlags.Instance | BindingFlags.NonPublic); <br>m.Invoke(monitor, new object[] { }); <br>DisableFCNs = true; <br>} <br>public void Dispose() { } <br>} <br> <br>随后在Web.Config中加入Module配置 <br><span><u></u></span> 代码如下:<pre class="brush:php;toolbar:false layui-box layui-code-view layui-code-notepad"><ol class="layui-code-ol"><li><br><!--解决删除项目文件/文件夹引起的IIS重启--> <br><add name="stopAppDomainRestartOnFolderDelete" type="DeployAssistant.Facade.Web.StopAppDomainRestartOnFolderDeleteModule,DeployAssistant.Facade"/> <br> <br>这样每次再删除文件/文件夹AppDomain都不会重启了,Session也不会丢失了。世界也变得更美好了! <br><br>PS:Web.Config和bin文件夹下的改动依然会让Web重启,这也是必须保留的!</li><li> </li><li> </li></ol></pre>