水晶报表拒绝访问

             用VS2008在C#环境下开发B/S模式的网站时,当代码在本机上运行时,报表都可以出来,并且可以到打印界面。但是一旦将网站进行发布时就会出现下面的错误 异常详细信息: System.Runtime.InteropServices.COMException: 拒绝访问。 源错误:  行 32: string reportPath = Server.MapPath("test.rpt"); 行 33: string rtPath = Server.MapPath("XMLSchema2.xsd"); 行 34: customerReport.Load(reportPath); 行 35: //DataSet dataSet = DataSetConfiguration.CustomerDataSet; 行 36: //DataSet dataset = DbHelperSQL.Query(sql); 源文件: c:/Inetpub/wwwroot/DataSets/report.aspx.cs    行: 34  堆栈跟踪:  [COMException (0x80004005): 拒绝访问。 ] CrystalDecisions.ReportAppServer.ClientDoc.ReportClientDocumentClass.Open(Object& DocumentPath, Int32 Options) +0 CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.Open(Object& DocumentPath, Int32 Options) +144 CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.EnsureDocumentIsOpened() +526 [CrystalReportsException: 加载报表失败。] CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.EnsureDocumentIsOpened() +621 CrystalDecisions.CrystalReports.Engine.ReportDocument.Load(String filename, OpenReportMethod openMethod, Int16 parentJob) +1969 CrystalDecisions.CrystalReports.Engine.ReportDocument.Load(String filename) +186 _report.ConfigureCrystalReports(String sql1, String sql2, String check) in c:/Inetpub/wwwroot/DataSets/report.aspx.cs:34 _report.Page_Init(Object sender, EventArgs e) in c:/Inetpub/wwwroot/DataSets/report.aspx.cs:334 System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +14 System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +35 System.Web.UI.Control.OnInit(EventArgs e) +99 System.Web.UI.Page.OnInit(EventArgs e) +12 System.Web.UI.Control.InitRecursive(Control namingContainer) +333 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +378

        刚开始出现这样的问题,总以为是代码中的配置问题,对代码进行大量的修改排查问题后,最后 发现无论代码怎么改动都无法正常运行。 在尝试了多种方法都没有结果的时候,思想开始变得有点懈怠了。其实,这个时候要冷静下来仔细分析自己的考虑思路究竟是不是正确的, 如果自己的思路都不是正确的,那么在照这条路分析下去是好去意义的。建议大家在这个时候不妨冷静下来仔细的看一下错误提示,一般 浏览器对网页不能显示时都会给出原因提示。分析可以看到“异常详细信息: System.Runtime.InteropServices.COMException: 拒绝访问。”既然是拒绝访问则肯定是你的权限不足,他才拒绝你。分析打印报表的机制可以了解到,水晶报表的打印是:水晶报表在生成的过程中需要创建缓冲文件,这些缓冲文件都会生成到系统默认缓冲区中。所以这个temp文件夹必须要要给IIS登陆账号一个可写权限,否则将会报错。 这样一来问题就可以迎刃而解了。

     解决办法: 这样一来问题就可以迎刃而解了。 解决办法:找到系统指定的缓冲文件夹(C:/WIONDOWS/TEMP)(可以在环境变量中查看),然后点击属性->安全->组和用户名称->User权限设置相应的权限,我给了个完全控制的权限,建议大家不要这样给,权限给的太高会带来很多安全隐患,如果你是在局域网里搭建网站平台问题还不太要紧。

posted @ 2012-02-23 18:01  AllenLYU  阅读(1198)  评论(0编辑  收藏  举报
levels of contents