gpt4 book ai didi

c# - 创建和删除文件夹时 MVC session 丢失

转载 作者:行者123 更新时间:2023-11-30 16:14:51 26 4
gpt4 key购买 nike

我正在运行 MVC4 asp.net 应用程序,它处理应用程序文件夹内的创建/删除文件夹。

当应用程序创建或删除文件夹时 session 保持不变。

但是当应用程序创建一个文件夹然后一个接一个地删除时, session 丢失了。

我已将此代码段放在 Global.asax 中,作为维持 session 的决心,即使应用程序内的物理文件夹发生变化也是如此:

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[] { });

有什么方法可以解决这个问题而不需要将文件夹位置移到应用程序文件夹之外吗?

最佳答案

如果您修改 bin 子文件夹中的任何内容,应用程序将被回收,这将导致 InProc session 丢失。

如果您创建/删除 bin 以外的文件夹,我不希望应用程序被回收,但是您可以通过向 Application_End 添加跟踪语句来轻松检查这一点。如果此事件被触发,您的应用程序将被回收。

应用程序在修改 bin 目录后回收是设计使然,我不会试图通过反射(reflect)私有(private) ASP.NET 方法来干扰它。

您可以尝试使用进程外的 SessionState 模式(StateServer 或 SQLServer)

关于c# - 创建和删除文件夹时 MVC session 丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20279702/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com