4

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

但是,这会导致会话丢失(甚至是应用程序重新启动)。我在 google 上查找了一些东西,并找到了以下链接
这似乎是 ASP.NET 2.0(和 3.5)中的一个问题。

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

4

5 回答 5

6

尝试禁用文件系统的监控。这将阻止您的会话活动。 这篇文章可能对你有用。

于 2009-02-02T10:29:01.653 回答
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。它看起来就像一个真实的目录。

于 2009-02-02T10:19:25.993 回答
1

我有同样的问题。解决方案是使用 ASP.Net State 服务将会话处理外部化。唯一的缺点是您放置在会话中的每个对象都需要可序列化,因为它被传输到状态服务并返回。

我目前无法提供更多链接,但谷歌会帮助你,因为你知道要搜索什么。

于 2009-02-02T10:18:04.467 回答
1

似乎有一个受支持的修补程序可以实现与 Sachin 提到的文章相同的效果(关闭网站中的文件更改通知)。

查看microsoft KB 中的这篇文章以获取更多信息。

但是由于您在评论中提到您无权访问服务器,我想这对您的情况也无济于事。

于 2009-02-02T10:50:26.117 回答
1

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

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

另请查看 App_Data 文件夹用法的问答部分:App_Data 文件夹问题

于 2009-02-02T10:59:53.103 回答