我有一个包含2个目录(书籍和导出)的应用程序。 如果我们在应用程序中创建书籍或书籍页面,则会添加带有页面ID的目录(这用于上载资源)。 如果我们删除页面,则会从数据库和文件系统中删除页面(及其目录)。
然而,这会导致会话丢失(甚至应用程序重启)。我在google上查了一些东西,发现了以下link。 它似乎是ASP.NET 2.0(和3.5)中的一个问题。 有没有人能解决这个问题。
我们现在正在考虑编写一个将在晚上清理目录的服务。 但是必须有另一个解决方案吗? 哦,将目录放在虚拟目录之外是不可取的。
答案 0 :(得分:6)
尝试禁用文件系统监控。这将阻止您的会话活动。 This article可能对您有用。
答案 1 :(得分:5)
哦,把目录放在外面 虚拟目录不是 选项。
将目录放在虚拟目录之外是我找到的唯一解决方案(到目前为止)。你可以做的是在文件系统中创建一个链接(联结),使目录看起来在虚拟目录中,例如:
使用程序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