【www.gdgbn.com--Dom教程】

add name="stopappdomainrestartonfolderdelete"
type="mywebsite.stopappdomainrestartonfolderdeletemodule" />
需要说明的是,"stopappdomainrestartonfolderdelete"为自定义的任意名称,"mywebsite"为上述.cs文件中的命名空间,一般为项目名称."stopappdomainrestartonfolderdeletemodule"为上述.cs文件中的类名.

这就是它。 这将防止文件夹删除appdomain重新启动,但修改web.config和bin文件夹时仍会重新启动,这正是我们想要的。

但是多删除几个文件就会发现session还是会过期,为什么会是这样的呢?现在还没搞清楚...于是在网上搜索就有了下面的这种方式

下面配置session的保存方式为stateserver就可以了

stateconnectionstring="tcpip=127.0.0.1:42424" />

using system.reflection;
using system.web;
namespace mywebsite
{
///


/// stops教程 the asp教程.net appdomain being restarted (which clears
/// session state, cache etc.) whenever a folder is deleted.
///

public class stopappdomainrestartonfolderdeletemodule : ihttpmodule
{
public void init(httpapplication context)
{
propertyinfo p = typeof(httpruntime).getproperty("filechangesmonitor",
bindingflags.nonpublic | bindingflags.public | bindingflags.static);
object o = p.getvalue(null, null);
fieldinfo f = o.gettype().getfield("_dirmonsubdirs",
bindingflags.instance | bindingflags.nonpublic | bindingflags.ignorecase);
object monitor = f.getvalue(o);
methodinfo m = monitor.gettype().getmethod("stopmonitoring",
bindingflags.instance | bindingflags.nonpublic);
m.invoke(monitor, new object[] { });
}
public void dispose() { }
}
}

本文来源:http://www.gdgbn.com/wangyezhizuo/27151/