Crystal Reports 2008 InprocServer + TempDir ="尚未实现操作"
我有一个使用CR 2008进行报告的.NET Web应用程序。部署该服务器的服务器已装有McAfee,我们希望告诉CR使用Windows临时目录以外的临时目录。
Google为我找到了以下注册表项:
SOFTWARE \ Business Objects \ Suite 12.0 \ Report Application Server \ InprocServer \ TempDir。
添加此密钥确实会导致CR在我指定的目录中创建一堆临时文件。但是,在报表运行结束时,出现"尚未实施的操作"异常。
我正在尝试通过ExportToHttpRequest()将PDF返回到浏览器,如果我不更改进程内服务器的tempdir,它就可以正常工作。
有人遇到过吗?我已经给本地ASPNET帐户完全控制新的tempdir。
谢谢。
解决方案
回答
我使用CR的年限比我想使用的要长,但从来不必指定其他临时文件夹。我们有什么具体原因吗?我不知道IIS进程是否可以"简单地"访问它。
硬盘中的"其他"临时目录是什么,或者更好,"它在哪里"是什么?
回答
在IIS5下,我们也尝试过这种方法。尝试设置TempDir注册表项后,遇到相同的问题。尽管所有其他报告导出(显然)都可以工作,但是PDF导出开始失败。
但是,在运行IIS6的客户端站点上,将临时文件重定向到专用目录的效果很好。默认情况下,Crystal Reports在其站点上使用目录
C:\ Program Files \ Business Objects \ BusinessObjects Enterprise 11.5 \ Data
作为其临时存储位置,并赋予ASP.NET帐户足够的特权以在其中创建和删除文件。因此,也许有些硬性逻辑要求在CR安装目录层次结构中创建文件。换句话说,在IIS6下安装CR后,默认情况下所有这些工作均按预期进行。
对于版本12,显然目录会稍有不同。
回答
C:/ windows / temp以外的其他临时目录应位于网站的虚拟目录中。只需在网站目录中添加该临时文件夹,并在其虚拟路径上将其托管在IIS上时,它便会自动包含在内。如果要在其他位置(例如D:/ CrystalTEmp)进行创建,则需要将此文件夹添加到Inetmgr中,只需右键单击该目录并启用其Web共享。是的,我们需要授予网络服务对此临时文件夹的完整权限。
如果将网站目录放置在inetpub / wwwroot中,则无需授予网络服务权限。