【发布时间】:2013-11-30 03:25:14
【问题描述】:
我正在运行一个 MVC4 asp.net 应用程序,它处理应用程序文件夹内的创建/删除文件夹。
当应用创建或删除文件夹时会话保持不变。
但是当应用创建一个文件夹然后一个又一个删除时会话丢失了。
我已将此 sn-p 放在 Global.asax 中,以解决即使应用程序内的物理文件夹发生变化也能维持会话:
PropertyInfo p = typeof(System.Web.HttpRuntime).GetProperty("FileChangesMonitor", indingFlags.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[] { });
有没有什么办法可以在不将文件夹位置移到应用文件夹之外的情况下解决这个问题?
【问题讨论】:
-
.NET 4.5.1 中的更改会破坏您的文件监控。因此,无论何时添加或删除文件夹,您的 ApplicationPool 都会重新启动。因此,您的会话消失了。只是一点背景。
标签: c# asp.net .net asp.net-mvc session