2012-06-28 52 views
2

我的问题是,我有一个带有水晶报告的ASP.Net应用程序。我必须将Crystal报表的ReportDocument对象存储在会话状态中,这是一个非托管资源。清理会话中的非托管资源,如Crystal Report文档

我的问题是:请问ReportDocument对象上Session.Abandon处理掉,否则我将不得不手动做我自己,如果我必须手动从会话状态中删除ReportDocument对象。我应该遵循什么过程,因为在Session_End事件中,我不知道存储在SessionState中的对象的名称是什么,它们都不能识别ReportDocument对象存储在Session中的Key

请帮助...

回答

0

我相信,当你存储在你只是简单的序列化的对象目前的状态,这个副本不会被持有的任何非托管资源的副本中的会话对象,但原始对象将会在您将它保存到会话后处理。

编辑

或者存储在与单个键集合一个会话对象的所有报表。例如列表报告

+0

我正在使用'InProc'会话模式,所以我不需要序列化要存储在会话状态中的对象的副本,还是对象在存储在会话中之前序列化自己? –

+0

是的,你可能是对的,如果你使用InProc会话模式,我不认为这个对象是序列化的。在这种情况下,你能解释为什么你不知道钥匙吗?密钥只需要在每个会话中唯一,例如session [“report”]可以在多个会话中正常工作,每个会话将获得它自己的版本。如果您需要存储许多报告,然后使用一个密钥存储一组报告。 –

+0

我有超过15个页面,每个页面都在会话中存储他们自己的Crystal Reports文档,以利用Crystal Reports的分页,如果我没有将它放在Session中,这将不起作用。我之所以这么说,是因为可能会有更多的页面添加更多的会话中存储的Document对象... –

相关问题