当前位置: 代码迷 >> ASP.NET >> application和 cache 数据丢失
  详细解决方案

application和 cache 数据丢失

热度:5393   发布时间:2013-02-25 00:00:00.0
求助 application和 cache 数据丢失
我用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。
  相关解决方案