add name="stopappdomainrestartonfolderdelete"
type="mywebsite.stopappdomainrestartonfolderdeletemodule" />
需要說明的是,"stopappdomainrestartonfolderdelete"為自訂的任意名稱,"mywebsite"為上述.cs檔案中的命名空間,一般為項目名稱."stopappdomainrestartonfolderdeletemodule"為上述.cs檔案中的類名.
這就是它。 這將防止檔案夾刪除appdomain重新啟動,但修改web.config和bin檔案夾時仍會重新啟動,這正是我們想要的。
但是多刪除幾個檔案就會發現session還是會到期,為什麼會是這樣的呢?現在還沒搞清楚...於是在網上搜尋就有了下面的這種方式
在 <system.web>下面配置session的儲存方式為stateserver就可以了
<sessionstate mode="stateserver" statenetworktimeout="20"
stateconnectionstring="tcpip=127.0.0.1:42424" />
using system.reflection;
using system.web;
namespace mywebsite
{
/// <summary>
/// stops教程 the asp教程.net appdomain being restarted (which clears
/// session state, cache etc.) whenever a folder is deleted.
/// </summary>
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() { }
}
}