我有一个.NET应用程序,允许用户将图像上传到webapp中的目录,然后查看它们。问题是当我上传或删除webapp目录中的图像时会话丢失。当我添加图像时,似乎应用程序池正在被回收,而不仅仅是config或cs文件。
我已经在很多教程中看到过这种技术,我想知道它是否真的可以使用正确的服务器设置,或者它是否是一种完全有缺陷的技术。
如果我手动将图像添加到子目录,或手动删除它,会话仍然存在。 如果我通过visual studio将图像添加到子目录中,会话仍然存在,但如果我通过visual studio删除它,会话就会丢失。
如果我将图像上传到webapp之外的文件夹,那么我无法在img标签中显示它们。
我很想知道你可以做些什么作为解决方法。
答案 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等)。