Crystal Reports通过HTTP工作,但不通过HTTPS

问题描述:

我已经搜索了每个地方(我认为),但我一直无法找到答案,也许是因为它非常基本,但在这里。我最近部署了一个Silverlight业务应用程序到Windows Azure平台。我正在使用Crystal Reports进行报告,并且一切正常。我需要在SSL中运行应用程序,因此我购买了证书并按照说明启动应用程序并再次运行,除了报告之外,一切都很好。当我通过http访问网站时,我无法打印报告。但通过https我得到如下当我尝试打印报告:Crystal Reports通过HTTP工作,但不通过HTTPS

Unsupported Operation. A document processed by the JRC engine cannot be opened in the C++ stack.

说明:

An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

异常详细信息:

System.Runtime.InteropServices.COMException: Unsupported Operation. A document processed by the JRC engine cannot be opened in the C++ stack.

源错误:

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.

堆栈跟踪:

[COMException (0x80041811): Unsupported Operation. A document processed by the JRC engine cannot be opened in the C++ stack.] 
    CrystalDecisions.ReportAppServer.ClientDoc.ReportClientDocumentClass.Open(Object& DocumentPath, Int32 Options) +0 
    CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.Open(Object& DocumentPath, Int32 Options) +147 
    CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.EnsureDocumentIsOpened() +422 
[CrystalReportsException: Load report failed.] 
    CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.EnsureDocumentIsOpened() +549 
    CrystalDecisions.CrystalReports.Engine.ReportDocument.Load(String filename, OpenReportMethod openMethod, Int16 parentJob) +1613 
    CrystalDecisions.CrystalReports.Engine.ReportDocument.Load(String filename) +189 
    COCOBOLO.Web.Files.ReportHandler1.MeetingMinutes() +247 
    COCOBOLO.Web.Files.ReportHandler1.Page_Load(Object sender, EventArgs e) +2392 
    System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +25 
    System.Web.UI.Control.LoadRecursive() +71 
    System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +3064 

我几乎可以肯定,有一个使用SSL的Crystal Reports的权限问题,但我不知道该怎么做。有没有人有这个问题?请帮助!

+0

端口443是否打开? – craig 2013-03-01 16:15:27

+0

我不知道我明白。我已将Silverlight应用程序部署到Windows Azure,并且我已将其中一个端点分配到端口443.是否有办法在Azure平台上打开/关闭端口?原谅我的无知,这对我来说都是新的。回顾一下,除了Crystal Reports和SSL以外,一切都可以使用。 – 2013-03-01 18:13:45

由于您的堆栈跟踪显示加载报告失败,我要做的第一件事是检查您的项目中是否有报告,并且您的代码能够访问报告。 我知道一切工作正常使用HTTP。另外,请确保您已经在存储报告的文件夹上读取了写入权限。

+0

谢谢你的回应。我确实检查了报告在项目中,并且代码能够访问报告。我不确定如何为部署到Azure的项目设置文件夹的权限,但如果项目无法访问,是否在两种情况下都不会出现错误?但是,调试时唯一改变的是Azure WebRole属性中的启动操作。当我选择HTTP端点时,我可以打印没有问题。当我选择HTTPS端点时,出现错误。这是我改变的唯一的事情。有什么建议么? – 2013-03-03 04:56:27

+0

只是为了测试加载失败是由于无法访问报告的理论,我故意将报告更改为KNOW不存在的名称,并且正如预期的那样,代码在尝试加载报告:OrderReport = new ReportDocument(); string reportPath = Server.MapPath(“〜/ Reports/ProjectMeeeetingMinutes.rpt”); OrderReport.Load(reportPath); – 2013-03-03 05:08:06

+0

当我将报告名称更改为现有报告时,报告成功加载并且已验证所有连接字符串变量和报告参数后失败:OrderReport。ExportToHttpResponse(exportType,Response,true,“Meeeting Minutes”);因此,似乎将报告导出到缓冲区,以便用户可以查看报告导致错误。但我不知道如何解决这个错误。 – 2013-03-03 05:16:40

问题不在你的水晶报告中。这个问题是因为s​​sl不想加载pdf文件。

Display pdf in iframe using ssl/https based

你可以尝试下载PDF浏览器在Chrome网上应用店是在SSL和对我的工作。

最好的方面。