我正在使用一个相当大的.net Web应用程序。
用户希望能够将报告导出为PDF。由于报告基于多层数据的汇总,因此获取准确快照的最佳方法是实际拍摄UI快照。我可以使用UI的html并将其解析为PDF文件。
由于UI可能最多需要30秒的加载时间,但结果永远不会改变,因此我希望在项目保存到后台线程后立即缓存pdf。
我对这种方法的主要担心是,如果我通过UI,则必须担心超时。尽管后台线程之类的内容可以根据需要持续使用多长时间,但是aspx页面只能持续使用很长时间,直到它们终止。
我有两个主意如何解决这个问题。第一个想法是创建一个ASPX页面,该页面可加载UI,覆盖渲染并将渲染的数据存储到数据库。后台线程会在内部向该页面发出WebRequest,然后从数据库中获取结果。显然,这必须考虑安全性,并且如果UI需要太长时间才能生成,还需要担心超时。
另一个想法是创建一个页面对象,并在代码中手动填充它,手动调用相关方法,然后从中获取数据。除了不知道如何执行该方法外,该方法的问题还在于,恐怕我可能会忘记调用一个方法,或者某些东西可能无法正常工作,因为它实际上与实际的会话或Web服务器无关。>
在后台线程中模拟页面UI的最佳方法是什么?
@RickNZ:由于需要的工作量,它不在我列表的首位,但是如果您能想到一种解决webrequest可能导致的超时问题以及在后台线程中创建页面的循环问题的方法,原因,我都听不清。
– diademNovember 23, 2009 14:16