我将ASP.Net应用程序从.NET 1.1升级到.NET 2.0。所有网页仍然可以正常工作,但Crystal Reports将无法加载。
堆栈追踪:
Load report failed.
StackTrace: at CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.EnsureDocumentIsOpened()
at CrystalDecisions.CrystalReports.Engine.ReportDocument.Load(String filename, OpenReportMethod openMethod, Int16 parentJob)
at CrystalDecisions.CrystalReports.Engine.ReportClass.Load(String reportName, OpenReportMethod openMethod, Int16 parentJob)
at CrystalDecisions.CrystalReports.Engine.ReportDocument.EnsureLoadReport()
at CrystalDecisions.CrystalReports.Engine.ReportDocument.SetDataSourceInternal(Object val, Type type)
at CrystalDecisions.CrystalReports.Engine.ReportDocument.SetDataSource(DataSet dataSet)
有谁知道它为什么不加载?
架构:Windows Server 2008(IIS 7)
调用报告的代码:
ReportClass ApprovalPage=new CustomerJobLabelApprovalMod();
ApprovalPage.SetDataSource(reportDataSet);
CustomerJobLabelApprovalMod的代码:
//------------------------------------------------------------------------------
// <autogenerated>
// This code was generated by a tool.
// Runtime Version: 1.1.4322.2407
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </autogenerated>
//------------------------------------------------------------------------------
namespace LabelVault {
using System;
using System.ComponentModel;
using CrystalDecisions.Shared;
using CrystalDecisions.ReportSource;
using CrystalDecisions.CrystalReports.Engine;
public class CustomerJobLabelApprovalMod : ReportClass {
public CustomerJobLabelApprovalMod() {}
public override string ResourceName {
get {
return "CustomerJobLabelApprovalMod.rpt";
}
set {
// Do nothing
}
}
[Browsable(false)]
[DesignerSerializationVisibilityAttribute(System.ComponentModel.DesignerSerializationVisibility.Hidden)]
public CrystalDecisions.CrystalReports.Engine.Section Section1 {
get {
return this.ReportDefinition.Sections[0];
}
}
[Browsable(false)]
[DesignerSerializationVisibilityAttribute(System.ComponentModel.DesignerSerializationVisibility.Hidden)]
public CrystalDecisions.CrystalReports.Engine.Section Section2 {
get {
return this.ReportDefinition.Sections[1];
}
}
[Browsable(false)]
[DesignerSerializationVisibilityAttribute(System.ComponentModel.DesignerSerializationVisibility.Hidden)]
public CrystalDecisions.CrystalReports.Engine.Section Section3 {
get {
return this.ReportDefinition.Sections[2];
}
}
[Browsable(false)]
[DesignerSerializationVisibilityAttribute(System.ComponentModel.DesignerSerializationVisibility.Hidden)]
public CrystalDecisions.CrystalReports.Engine.Section Section4 {
get {
return this.ReportDefinition.Sections[3];
}
}
[Browsable(false)]
[DesignerSerializationVisibilityAttribute(System.ComponentModel.DesignerSerializationVisibility.Hidden)]
public CrystalDecisions.CrystalReports.Engine.Section Section5 {
get {
return this.ReportDefinition.Sections[4];
}
}
}
[System.Drawing.ToolboxBitmapAttribute(typeof(CrystalDecisions.Shared.ExportOptions), "report.bmp")]
public class CachedCustomerJobLabelApprovalMod : Component, ICachedReport {
public CachedCustomerJobLabelApprovalMod() {}
public virtual bool IsCacheable {
get {
return true;
}
set {}
}
public virtual bool ShareDBLogonInfo {
get {
return false;
}
set {}
}
public virtual System.TimeSpan CacheTimeOut {
get {
return CachedReportConstants.DEFAULT_TIMEOUT;
}
set {}
}
public virtual CrystalDecisions.CrystalReports.Engine.ReportDocument CreateReport() {
CustomerJobLabelApprovalMod rpt = new CustomerJobLabelApprovalMod();
rpt.Site = this.Site;
return rpt;
}
public virtual string GetCustomizedCacheKey(RequestContext request) {
String key = null;
// // The following is the code used to generate the default
// // cache key for caching report jobs in the ASP.NET Cache.
// // Feel free to modify this code to suit your needs.
// // Returning key == null causes the default cache key to
// // be generated.
//
// key = RequestContext.BuildCompleteCacheKey(
// request,
// null, // sReportFilename
// this.GetType(),
// this.ShareDBLogonInfo );
return key;
}
}
}
答案 0 :(得分:4)
后来很多很难用Google搜索...
我必须在Windows\Temp
上授予NETWORK SERVICE权限,因为Crystal Reports会抓取该用户,并且不被模拟的用户(具有管理员权限。)所以该目录,而不是IIS目录,是正在使用的目录。
这令人沮丧,但它现在有效!
答案 1 :(得分:1)
我似乎记得这样做了一段时间后我在web.config中找到了一些旧的Crystal Reports内容的引用。