会话和应用程序池:一个存储和显示图像的ASP.NET应用程序

时间:2009-03-18 19:10:19

标签: asp.net session image file

我有一个.NET应用程序,允许用户将图像上传到webapp中的目录,然后查看它们。问题是当我上传或删除webapp目录中的图像时会话丢失。当我添加图像时,似乎应用程序池正在被回收,而不仅仅是config或cs文件。

我已经在很多教程中看到过这种技术,我想知道它是否真的可以使用正确的服务器设置,或者它是否是一种完全有缺陷的技术。

如果我手动将图像添加到子目录,或手动删除它,会话仍然存在。 如果我通过visual studio将图像添加到子目录中,会话仍然存在,但如果我通过visual studio删除它,会话就会丢失。

如果我将图像上传到webapp之外的文件夹,那么我无法在img标签中显示它们。

我很想知道你可以做些什么作为解决方法。

3 个答案:

答案 0 :(得分:1)

尝试将会话存储在状态外进程中。您可以通过在“管理工具”的“服务”屏幕中启动“ASP.Net State Service”然后在web.config中使用此行来执行此操作:

<sessionState
            mode="StateServer"
            stateConnectionString="tcpip=127.0.0.1:42424"
            cookieless="false"
            timeout="20" />

这将允许您的会话保持,即使您重置IIS。

答案 1 :(得分:1)

我会检查事件日志以确保您正在执行的操作不会导致AppPool崩溃

答案 2 :(得分:0)

您可以将图像ID等信息存储在控件中的asp:HiddenField或.Attribute []中。例如,当我需要将按钮绑定到列表中的特定项目时,我会给按钮一个属性,该属性反映了相关项目的ID。我将HiddenFields用于没有一个关联控件的其他信息(即帖子ID等)。