删除目录会导致应用程序重新启动

时间:2009-02-02 10:11:46

标签: asp.net session directory delete-directory

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

然而,这会导致会话丢失(甚至应用程序重启)。我在google上查了一些东西,发现了以下link。 它似乎是ASP.NET 2.0(和3.5)中的一个问题。 有没有人能解决这个问题。

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

5 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分: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是指向真实数据目录的链接/联结。您可以将链接视为物理目录。

E.g。在您的网站中,您可以使用以下代码访问它:

Server.MapPath("~/data")

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

答案 2 :(得分:1)

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

我目前无法提供更多链接,但谷歌会帮助您,现在您知道要搜索的内容。

答案 3 :(得分:1)

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

查看this article in the microsoft KB了解详情。

但是,既然你在评论中提到,你没有访问服务器的权限,我想这对你的情况也无济于事。

答案 4 :(得分:1)

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

  

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

同时检查Q& A部分的App_Data文件夹用法:App_Data folder question

相关问题