【问题标题】:Session and app pool: an ASP.NET app that stores and displays images会话和应用程序池:存储和显示图像的 ASP.NET 应用程序
【发布时间】:2009-03-18 19:10:19
【问题描述】:

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

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

如果我手动将图像添加到子目录或手动删除它,会话仍然存在。 如果我通过 Visual Studio 将图像添加到子目录,会话仍然存在,但如果我通过 Visual Studio 将其删除,则会话丢失。

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

我很想听听您可能会采取什么解决方法。

【问题讨论】:

  • “通过 Visual Studio 删除”是什么意思?你的意思是“在代码中”?
  • 抱歉回复晚了。我的意思是使用解决方案资源管理器界面。

标签: asp.net session image file


【解决方案1】:

尝试将会话存储在状态外的进程中。您可以通过在“管理工具”的“服务”屏幕中启动“ASP.Net 状态服务”,然后在您的 web.config 中使用这一行来做到这一点:

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

这将使您的会话保持不变,即使您重置了 IIS。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-04-17
        • 2023-04-04
        • 2021-06-06
        相关资源
        最近更新 更多