我有一个包含 2 个目录(书籍和导出)的应用程序。如果我们在应用程序中创建一本书或一本书的页面,则会添加一个带有页面 ID 的目录(用于上传资源)。如果我们删除一个页面,该页面(及其目录)将从数据库和文件系统中删除。

然而,这导致会话丢失(甚至应用程序重新启动)。我在谷歌上查了一些东西,发现了以下内容 关联。这似乎是 ASP.NET 2.0(和 3.5)中的一个问题。有没有人有解决这个问题的办法。

我们现在正在考虑编写一个在晚上清理目录的服务。但必须有另一种解决方案吗?哦,将目录放在虚拟目录之外也不是一个选择。

有帮助吗?

解决方案

哦,将目录放在虚拟目录之外不是一个选项。

将目录放在虚拟目录之外是我找到的唯一解决方案(到目前为止)。您可以做的是在文件系统中创建一个链接(连接),使该目录看起来位于虚拟目录内,例如:

  • 我们的网站(虚拟目录)位于 C:\projectX\website
  • 数据目录(我们创建/删除文件和文件夹的位置)位于 C:\projectX\data
  • 然后我们创建一个链接,使数据文件夹可用作 C:\projectX\website\data

该链接是使用程序 Linkd.exe(在 Windows 资源工具包中提供)使用以下命令创建的:

linkd c:\projectX\website\data c:\projectX\data

现在 c:\projectX\website\data 是指向真实数据目录的链接/连接点。您可以像使用物理目录一样使用该链接。

例如。在您的网站中,您可以使用以下代码访问它:

Server.MapPath("~/data")

您还可以使用 Windows 文件资源管理器并浏览到 C:\projectX\website\data。它看起来就像一个真实的目录。

其他提示

尝试禁用文件系统的监视。这将防止您的会话存活。 这文章可能是有用的为你。

有似乎是一个支持修补程序,其实现相同的文章中提到的Sachin(关闭文件更改通知在网站)。

检查本文中的微软KB 获得更多的信息。

但既然你在留言中提到,你没有访问到服务器,我想这也不会在你的情况有所帮助。

为了存储经常更新、创建和删除的数据文件,您需要使用网站根目录中的 App_Data 文件夹。App_Data 文件夹的 MSDN 指出:

包含应用程序数据文件,包括MDF文件,XML文件以及其他数据存储文件。ASP.NET 2.0使用App_Data文件夹来存储应用程序的本地数据库,该数据库可用于维护会员资格和角色信息。

另请检查 Q&A 部分以了解 App_Data 文件夹的使用情况: App_Data文件夹问题

我有同样的问题。该解决方案是使用ASP.Net状态服务外部化的会话处理。唯一的拉回是,每个对象放置在会话需要是可序列化的,因为它被转移到服务状态和背部。

我目前还没有可能提供进一步的链接,但谷歌将帮助你,现在你知道该怎么寻找。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top