我正在尝试集成多个组件来构建自定义报告解决方案。其中一个组件是基于模板的报告生成器。它读取包含占位符的RTF文件的模板并执行替换。这很好用,并生成一个RTF报告。
虽然它可以将结果生成为流而不是物理RTF文件,但它具有一个属性,用于指定模板(输入)文件的全名。这在桌面应用程序上没问题,但在谈到WCF服务时,我想避免在HD中使用物理文件。
所有模板都存储在数据库中。应用程序将其作为流从那里读取,然后将其作为RTF文件保存到HD。 我想知道在c#中是否有可能以一种“虚拟”或“虚构”路径指定字符串的方式“欺骗”报告生成器,然后组件将打开来自内存流的模板,因为它是光盘上的真实物理路径。
任何帮助将不胜感激。
提前致谢,
的Gonzalo
答案 0 :(得分:2)
根据报告解决方案的工作方式,您可以使用命名管道。有关详细信息,请参阅this MSDN page,但基本要点是您可以调用CreateNamedPipe
并指定要使用的名称(使用该MSDN页面上列出的格式),然后将该名称作为文件传递报告解决方案的名称。
答案 1 :(得分:1)
在C#4中,您可以使用内存映射文件:http://weblogs.asp.net/gunnarpeipman/archive/2009/06/21/net-framework-4-0-using-memory-mapped-files.aspx
答案 2 :(得分:0)
如果RTF库支持使用WebRequest
从互联网加载RTF文件,您可以致电WebRequest.RegisterPrefix
让其为特定WebRequest
调用您自己的Uri
课程。如果它仅对以WebRequest
开头的路径使用http
,则可以注册前缀http://MyNonExistantDomain.internal/
。