asp.net 删除项目文件/文件夹IIS重启,Session丢失问题

仔细一看,SSO返回的ticket也不相同,才发现原来IIS重启了,最后解决方案如下:

新建一个类继承IHttpModule


代码如下:

/// <summary>
/// Stops the ASP.NET AppDomain being restarted (which clears
/// Session state, Cache etc.) whenever a folder is deleted.
/// </summary>
public class StopAppDomainRestartOnFolderDeleteModule : IHttpModule
{
private static bool DisableFCNs = false;
public void Init(HttpApplication context)
{
if (DisableFCNs) return;
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[] { });
DisableFCNs = true;
}
public void Dispose() { }
}

随后在Web.Config中加入Module配置


代码如下:

<!--解决删除项目文件/文件夹引起的IIS重启-->
<add name="stopAppDomainRestartOnFolderDelete" type="DeployAssistant.Facade.Web.StopAppDomainRestartOnFolderDeleteModule,DeployAssistant.Facade"/>

这样每次再删除文件/文件夹AppDomain都不会重启了,Session也不会丢失了。世界也变得更美好了!

PS:Web.Config和bin文件夹下的改动依然会让Web重启,这也是必须保留的!

(0)

相关推荐

  • 实现Asp与Asp.Net共享Session的方法

    <iframe align="top" marginwidth="0" marginheight="0" src="http://www.zealware.com/46860.html" frameborder="0" width="468" scrolling="no" height="60"></iframe> 在.ne

  • ASP.NET 程序中删除文件夹导致session失效问题的解决办法分享

    在Global中  Application_Start 添加 如: 复制代码 代码如下: void Application_Start(object sender, EventArgs e)    {        //在应用程序启动时运行的代码        System.Reflection.PropertyInfo p = typeof(System.Web.HttpRuntime).GetProperty("FileChangesMonitor", System.Reflect

  • ASP.NET 使用application与session对象写的简单聊天室程序

    ASP.Net中有两个重要的对象,一个是application对象,一个是session对象. Application:记录应用程序参数的对象,该对象用于共享应用程序级信息. Session:记录浏览器端的变量对象,用来存储跨网页程序程序的变量或者对象. 说实话,写了快一年的asp.net,application对象还真没怎么用过.看了看书,根据这两个对象的特性写了一个简单的聊天室程序.真的是非常的简陋. 我的思路是,有两个页面Default页和ChatRoom页,页面布局如图: Default

  • ASP.NET ASHX中获得Session的方法

    1-在 aspx和aspx.cs中,都是以Session["xxx"]="aaa"和aaa=Session["xxx"].ToString()进行读写. 而在ashx中,Session都要使用context.Session,读写方法是这样的: context.Session["xxx"]="aaa"和aaa=context.Session["xxx"].ToString() 2-在ash

  • ASP.NET中在一般处理程序中使用session的简单介绍

    复制代码 代码如下: <%@ WebHandler Language="C#" Class="ChangePwd" %> using System; using System.Web; using System.Web.SessionState; public class ChangePwd : IHttpHandler, IReadOnlySessionState { public void ProcessRequest (HttpContext co

  • asp.net基于session实现购物车的方法

    本文实例讲述了asp.net基于session实现购物车的方法.分享给大家供大家参考,具体如下: //加入购物车 protected void LinkButton2_Click(object sender, EventArgs e) { DataTable dt = null; //用户购买商品 如果 没有登录 则提示登录 if (Session["userName"] == null) { Common.MessageBox.ShowAndRedirectTo(this.Page,

  • Asp.Net程序目录下文件夹或文件操作导致Session失效的解决方案

    1.配置web.config <system.web> <sessionState mode="StateServer" stateConnectionString="tcpip=127.0.0.1:42424" sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes" cookieless="false" timeout="

  • asp.net 删除项目文件/文件夹IIS重启,Session丢失问题

    仔细一看,SSO返回的ticket也不相同,才发现原来IIS重启了,最后解决方案如下: 新建一个类继承IHttpModule 复制代码 代码如下: /// <summary> /// Stops the ASP.NET AppDomain being restarted (which clears /// Session state, Cache etc.) whenever a folder is deleted. /// </summary> public class Stop

  • ASP如何检测某文件夹是否存在,不存在则自动创建

    直接给大家分享一下我们测试正常可以使用的代码,并且支持多级目录创建 代码一 Function CreateMultiFolder(ByVal CFolder) Dim objFSO, PhCreateFolder, CreateFolderArray, CreateFolder Dim i, ii, CreateFolderSub, PhCreateFolderSub, BlInfo BlInfo = False CreateFolder = CFolder On Error Resume Ne

  • 如何用DOS命令删除顽固文件夹啊

    一.常规解决办法: 1.注消或重启电脑,然后再试着删除. 2.进入"安全模式删除". 3.在纯DOS命令行下使用DEL,DELTREE和RD命令将其删除. 4.如果是文件夹中有比较多的子目录或文件而导致无法删除,可先删除该文件夹中的子目录和文件,再删除文件夹. 5.在任务管理器中结束Explorer.exe进程,然后在命令提示符窗口删除文件. 6.如果你有安装ACDSee,FlashFXP,Nero,Total这几个软件,可以尝试在这几个软件中删除文件夹. 二.高级解决方案: 1.磁盘

  • php 删除指定文件夹的实例讲解

    1.前言 目标:php删除一个指定目录 所使用的的php函数:is_dir,opendir,readdir,scandir,rmdir,closedir,等等(注:其他文件操作函数也可以完成,这里只列举了本次使用的函数) 2.相关函数介绍 php文件操作的方法大致相同,已经在上一篇介绍过了,这里就不在重复介绍,这里就介绍一个新函数 rmdir 详情参考:http://www.w3school.com.cn/php/func_filesystem_rmdir.asp 3.代码构成 ** * [de

  • bat如何延时删除指定文件夹中的文件

    本文介绍的是bat如何延时删除指定文件夹中的文件,下面话不多说了,有需要的来一起看看下面的详细内容. 一.bat延时 xp程序中通过ping 127.0.0.1 -n 20 来实现延时操作,ping本地地址20行. win7中通过timeout 20 来实现延时20秒. 二.删除指定文件 del /q d:\11\*.* 删除d:\11文件夹下的所有文件,并且不需要提示删除. /P 删除每一个文件之前提示确认. /F 强制删除只读文件. /S 从所有子目录删除指定文件. /Q 安静模式.删除全局

  • C++删除指定文件夹下N天及之前日志文件的方法

    本文实例讲述了C++删除指定文件夹下N天及之前日志文件的方法.分享给大家供大家参考.具体如下: // 功能:删除nDays天及之前的日志文件 // @nDays: 0-不删除日志,3-删除3天及之前的日志(保留今天.昨天.前天的日志) ... void CRecordLog::ClearLog(UINT nDays) // 删除N天前的日志 { if (nDays > 0) { WIN32_FIND_DATA FindFileData; CString sAllFile = m_sLogFold

  • Java删除指定文件夹下的所有内容的方法(包括此文件夹)

    如下所示: // 删除文件夹 private static void deleteDirectory(File file) { if (file.isFile()) {// 表示该文件不是文件夹 file.delete(); } else { // 首先得到当前的路径 String[] childFilePaths = file.list(); for (String childFilePath : childFilePaths) { File childFile = new File(file

  • Lua中实现递归删除一个文件夹

    在使用 quick-cocos2d-x 做项目热更新的时候,我需要建立临时文件夹以保存下载的更新包.在更新完成后,我需要删除这些临时文件和文件夹. cocos2d-x 和 quick-cocos2d-x 都没有提供删除文件夹功能.我做了如下2个尝试: 1. 使用C++ 在 cocos2d-x 2.x 中的 AssetsManager包中提供了一个 CreateDirectory 方法.这个方法可以跨平台支持创建文件夹.在实际项目中运行没有问题. 复制代码 代码如下: bool AssetsMan

  • Lua脚本实现递归删除一个文件夹

    复制代码 代码如下: rmdir in quick-cocos2d-x with lua. 在使用 quick-cocos2d-x 做项目热更新的时候,我需要建立临时文件夹以保存下载的更新包.在更新完成后,我需要删除这些临时文件和文件夹. cocos2d-x 和 quick-cocos2d-x 都没有提供删除文件夹功能.我做了如下2个尝试: 1. 使用C++ 在 cocos2d-x 2.x 中的 AssetsManager包中提供了一个 CreateDirectory 方法.这个方法可以跨平台支

  • Shell脚本实现递归删除空文件夹

    有时我们需要递归删除空文件夹,网上找了一下,没有发现比较好的Shell脚本,于是自己动手写了一个 脚本 复制代码 代码如下: #!/bin/bash # author: 十年后的卢哥哥 # des: delete empty directories recursive deleteempty() {   find ${1:-.} -mindepth 1 -maxdepth 1 -type d | while read -r dir   do     if [[ -z "$(find "

随机推荐