【问题标题】:Crystal Reports works via HTTP but not via HTTPSCrystal Reports 通过 HTTP 工作,但不能通过 HTTPS
【发布时间】:2013-03-01 09:17:01
【问题描述】:

我已经搜索了所有地方(我认为),但我一直无法找到答案,也许是因为它太初级了,但这里就可以了。我最近将 Silverlight 业务应用程序部署到 Windows Azure 平台。我正在使用 Crystal Reports 进行报告,一切正常。我需要在 SSL 中运行该应用程序,因此我购买了一个证书并按照说明启动并运行该应用程序,除报告外,一切都运行良好。当我通过 http 访问该站点时,打印报告没有问题。但是当我尝试打印报告时,通过 https 我得到以下信息:

不支持的操作。 JRC 引擎处理的文档无法在 C++ 堆栈中打开。

说明:

当前执行过程中发生了未处理的异常 网络请求。请查看堆栈跟踪以获取有关的更多信息 错误及其源自代码的位置。

异常详情:

System.Runtime.InteropServices.COMException:不支持的操作。一个 JRC引擎处理的文档无法在C++中打开 堆栈。

来源错误:

在执行过程中产生了一个未处理的异常 当前的网络请求。有关原产地和位置的信息 可以使用下面的异常堆栈跟踪来识别异常。

堆栈跟踪:

[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 时存在权限问题,但我不知道该怎么做。有人遇到过这个问题吗?请帮忙!

【问题讨论】:

  • 我不确定我是否理解。我已将 Silverlight 应用程序部署到 Windows Azure,并将其中一个端点分配给端口 443。有没有办法在 Azure 平台上打开/关闭端口?原谅我的无知,这对我来说是全新的。回顾一下,除了带有 SSL 的 Crystal Reports 之外,一切都可以正常工作。

标签: azure https crystal-reports


【解决方案1】:

由于您的堆栈跟踪显示加载报告失败,我要做的第一件事是检查您的项目中是否有报告以及您的代码是否能够访问该报告。 我知道使用 HTTP 一切正常。此外,请确保您对存储报告的文件夹具有读写权限。

【讨论】:

  • 感谢您的回复。我确实检查了报告是否在项目中,并且代码能够访问报告。我不确定为部署到 Azure 的项目设置文件夹的权限,但如果项目没有访问权限,在这两种情况下我不会收到错误吗?但是,调试时我唯一要更改的是 Azure WebRole 属性中的启动操作。当我选择 HTTP 端点时,我可以毫无问题地打印。当我选择 HTTPS 端点时,我收到错误消息。这是我唯一要改变的事情。有什么建议吗?
  • 只是为了测试加载失败是由于无法访问报告的理论,我故意将报告更改为不存在的名称,正如预期的那样,代码失败当它尝试加载报告时: OrderReport = new ReportDocument(); string reportPath = Server.MapPath("~/Reports/ProjectMeeeetingMinutes.rpt"); OrderReport.Load(reportPath);
  • 当我将报告名称更改为现有报告时,报告成功加载并验证所有连接字符串变量和报告参数后失败:OrderReport.ExportToHttpResponse(exportType, Response, true, "会议纪要”);因此,似乎将报告导出到缓冲区以便用户可以查看导致错误的报告。但我不知道如何解决这个错误。
【解决方案2】:

问题不在您的水晶报表中。问题是因为 ssl 不想加载 pdf 文件。

Display pdf in iframe using ssl/https based

您可以尝试在 chrome 商店中下载 pdf 查看器,它适用于 ssl 和我。

最好的尊重。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-21
    • 1970-01-01
    • 1970-01-01
    • 2015-06-22
    • 2013-05-05
    相关资源
    最近更新 更多