0

我们正在使用 ASP.Net 图表工具(3.5 版)并希望将图表图像存储在 SQL Server 会话中。这是 web.config 中的部分:

<add key="ChartImageHandler" value="storage=session;timeout=20;" />

我们在 web.config 中的会话设置如下所示:

<sessionState mode="SQLServer" sqlConnectionString="Data Source={sql server name}; Integrated Security=SSPI;" cookieless="false" timeout="30"/>

图表图像在第一次加载页面时工作正常。但是,此后每次都无法加载。我们得到红色的 X/image not found 图形。看起来好像图像没有正确保存到会话中,但是更改“超时”值没有帮助。

文件存储选项版本确实有效:

<add key="ChartImageHandler" value="Storage=file;Timeout=800;Dir=C:\Directory\TempChartFiles;"/>

但是,我们更喜欢使用 SQL Server 会话选项。有没有办法让 SQL Server 会话选项与 ASP.Net 图表工具一起使用?

4

1 回答 1

0

首先,我不确定您在哪里设置密钥。是在还是您将其设置在更具体的地方。接下来,如何将代码设置为 Render。

据我所知,您期望一些神奇的 ASP.NET 精灵来存储值并自动为您从会话中提取它,这不是会话的工作方式。

另外,我不确定业务问题是什么,所以我什至不确定 session 是否是最好的存储位置。ASP.NET 有一组很棒的缓存选项,可以根据您的需要更具体地针对用户或针对应用程序。它也不是自动的,但通常比使用 Session 来存储东西更好。

正如我所看到的,这里的问题是您缺少一些代码来实际处理会话存储,而不是 SQL Server 问题。我将说明在这种情况下 SQL Server 可能是一个糟糕的会话选项,尤其是当您最终得到更大的图形时。与其他缓存解决方案相比,您可以大大降低可伸缩性。换句话说,我不相信 session 在任何情况下都是一个好的选择,但对于 SQL Server 可能更糟。

将 SQL Server 用于会话状态的主要原因是以下之一:

  1. 需要分布式解决方案,但不能使用会话服务器
  2. 需要能够从工作进程故障等中恢复,并且仍然保持会话

如果您有更多代码并且可以跟进更具体的业务原因,您可能会获得有关如何解决问题的更彻底的答案。

于 2011-06-07T15:21:26.257 回答