我们正在使用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 /图像未找到图形。看起来好像图像未正确保存到会话中,但更改“超时”值无济于事。
文件存储选项版本确实有效:
<add key="ChartImageHandler" value="Storage=file;Timeout=800;Dir=C:\Directory\TempChartFiles;"/>
但是,我们更喜欢使用SQL Server会话选项。有没有办法让SQL Server会话选项与ASP.Net图表工具一起使用?
答案 0 :(得分:0)
首先,我不确定您在哪里设置密钥。它是否存在或者您将其设置为更具体的位置。接下来,如何将代码设置为Render。
从我看到的,你期待一些神奇的ASP.NET童话来存储价值并自动从会话中拉出来,这不是会话的工作方式。
此外,我不确定业务问题是什么,所以我甚至不确定会话是否是最佳存储位置。 ASP.NET提供了一组很棒的缓存选项,可以根据您的需要提供更多用户特定或更多特定于应用程序的选项。它也不是自动化的,但通常比使用Session存储更好。
正如我所看到的,这里的问题是你缺少一些实际处理会话存储的代码,而不是SQL Server问题。在这种情况下,我将声明SQL Server可能是一个错误的Session选项,特别是如果你最终得到更大的图形。与其他缓存解决方案相比,您可以大大降低可扩展性。换句话说,我不相信会话在任何情况下都是一个很好的选择,但可能会更糟糕的SQL Server。
将SQL Server用于会话状态的主要原因是以下之一:
如果您有更多代码并且可以跟进更具体的业务原因,您可能会获得有关如何解决问题的更全面的答案。