我用application 和cache储存了数据,但是当我上传一个文件后,application 和cache储存的数据全部丢失了,请问下各位:
这是怎么回事呀?难道系统中不能上传文件,一旦上传就会丢失数据吗?因为我的程序没结束呀!请问有什么办法吗?
谢谢!
------解决方案--------------------------------------------------------
cache的数据是不是在你上传文件的时候被清空了
仔细检查下你的代码
------解决方案--------------------------------------------------------
具体表象:.net2.0版本的例子程序,当删除文章后(或修改有图片的文章删除了所有的图片),您会发现Application和Session被Reset掉。 (.net1.1版本的没有此现象) 。
实际问题所在:.net2.0框架的网站,在以下2种情况下:
情况A)当前应用下删除或重名文件夹会引发应用的重启。
asp.net 会监视应用程序目录,一但有被监视的动作发生(比如:修改了config、重命名目录,更改了bin目录里面的dll文件等)应用程序就会自动重起!这时你的应用的session和Application一定丢失了。
情况B)进程池资源回收引发应用的重启!
默认的会话模式是:InProc,即“进程内”模式。这种模式下,当应用的进程池资源回收的时候会释放资源,Application和Session都会丢失。
为了解决这个问题, 请选择以下几种解决方法中选择合适实际的一种进行配置即可解决:
1)修改session【如果您的网站跑在虚拟主机下,建议使用此方法】
首先,在“计算机管理”-》“服务”,把“ASP.NET 状态服务”设置为自动启动,并启动之。
然后找到站点,按下图设置对应的web应用程序的session会话状态模式。
设置后,用记事本打开web.config文件,将发现多了一行
<sessionState mode="StateServer" cookieless="AutoDetect" />
配置代码,说明已经配置完毕。当然您也可以直接在web.config直接加上此行代码。
2)使用SQLserver的会话模式
3)IIS虚拟目录解决方法【如果因为条件限制,而不能采用1或2的解决方法的时候,请采用本方法。】
可以通过IIS的配置来解决这个问题。在当前应用中,建立一个Doc虚拟目录(注意:此虚拟目录的物理文件夹跟应用的目录不能在同一个物理文件夹下。)
譬如:例子运行在默认站点下。
默认站点下,建立一个虚拟目录“sample2005”,此虚拟目录指向物理文件夹是“D:/test/sample2005”
那么在虚拟目录“sample2005”下,再建立一个名为“Doc”的虚拟目录,指向物理文件夹“D:/test/Doc”。此目录的执行权限为“无”。
这样配置后,删除文章的时候就不会引起应用被reset掉了。
注意:此方法只能解决情况A,而不能解决情况B。