【问题标题】:Crystal reports on Windows Azure is not getting displayedWindows Azure 上的 Crystal 报表未显示
【发布时间】:2011-03-15 10:07:56
【问题描述】:

我在 VS2010 ASP.net C# 中编写了一个 Web 应用程序来显示 Crystal 报表。 我将此应用程序移至 Azure 模拟器。它在本地运行良好。但是,在使用 Azure 部署后,水晶报表没有显示,甚至没有抛出异常。

我已经安装了

  1. 已安装 CRforVS_13_0.exe
  2. 然后在我的机器上依次安装CRRuntime_64bit_13_0。

来自 any1 的任何输入都会有所帮助。如果您想了解更多信息,请告知。

谢谢, 塔努贾

【问题讨论】:

    标签: c# asp.net visual-studio-2010 crystal-reports azure


    【解决方案1】:

    绝对可以做到。我自己做了,还一步步写了blog post about running Crystal Reports on Azure

    它围绕创建启动任务以在新的 Azure Web 角色实例上运行 Crystal 报告安装文件展开。我列出了很多障碍,所以请尝试一下。它确实有效!

    【讨论】:

    • 您的程序正在运行,但我面临以下问题:msi 将 Aspnet_Client 文件夹安装在 D:\inetpub\wwwroot\aspnet_client 但 Azure 将我的应用程序放在 E:\sitesroot\0 中。因此,许多文件未提供(crv.js)导致 Javascript 错误(未定义 bobj)。你是如何解决这个问题的?
    • 是的,我刚刚复制了整个文件夹并将其放入解决方案中
    • 是的,我要做什么......首先在 StartUp.cmd -> robocopy D:\inetpub\wwwroot E:\sitesroot\0 /S [无法正常工作:msiexec 在 CR 之前退出已安装] 然后将所有文件放入 Web 应用程序 请为未来的用户更新您的博客文章!
    • 另一个建议:为了加快部署过程,下载 CR 安装程序而不是将其放入 bin 中可能很有用。我在 StartUp.cmd superuser.com/a/59489/113303 中放了一行
    • 我的意思是我将 aspnet_client 文件夹复制并粘贴到我的解决方案中,然后然后部署它。它不在我的启动任务中。虽然你的方式可能更整洁。有趣的建议...我已经尝试使用 BootStrapper 从我的 blob 存储中下载此安装文件,但我无法让它工作
    【解决方案2】:

    我刚刚遇到了在 Azure 上运行 Crystal Reports 2010 (13.0.4) 的相同问题。我听从了BritishDeveloper 和其他一些来源的建议。我的方法略有不同,因为我使用 Azure blob 存储来存储水晶运行时,这使得项目发布比将其包含在项目中时快得多。

    以下是我获得水晶报告的方法:

    1) 在Azure portal内设置新的blob存储服务

    2) 将 Crystal 安装程序上传到此 blob 存储

    使用免费工具CloudXplorerCRRuntime_64bit_13_9_4.msi上传到名为crystalinstaller的容器中(上传前记得解压)。

    3) 在 Visual Studio 中,在您的 Azure 项目 ServiceDefinition.csdef 中创建启动脚本定义:

    <ServiceDefinition...>
      <WebRole...>
        <Startup>
          <Task commandLine="AzureStartUp.cmd" executionContext="elevated" taskType="background" />
        </Startup>
      </WebRole>
    </ServiceDefinition>
    

    4) 将以下启动脚本存储在您的 Web 项目的根目录中,并将“构建操作”none 和“复制到输出”设置为 always。这里学到的教训:approot/siteroots 并不总是在 E: 驱动器上

    @ECHO off
    @REM Setting up Azure Stroage Credentials
    set azurestoragename=<name>
    set azurestoragekey=<key>
    set storagecontainername=crystalinstaller
    
    @REM Setting up Azure Drive 
    @REM (sometimes E:, sometimes F: maybe one day G:?)
    set drive=%cd:~0,3%
    
    @REM Download Crystal Runtime 13.0.4
    @REM from blob storage account
    set filename=CRRuntime_64bit_13_0_4.msi
    AzureBlobDownloader.exe "%azurestoragename%" "%azurestoragekey%" "%storagecontainername%" "%filename%"
    
    @REM Install Crystal Runtime 13.0.4
    msiexec.exe /I CRRuntime_64bit_13_0_4.msi /qn
    
    @REM Copy Crystal Reports Viewer Files
    robocopy D:\inetpub\wwwroot %drive%sitesroot\0 /S
    robocopy D:\inetpub\wwwroot %drive%approot /S
    

    5) 下载一个命令行工具,该工具可以从 blob 存储下载到您的 azure 服务虚拟机 我使用了来自Windows Azure Tomcat Solution 的 packagedownloader.exe,但可能还有其他的,或者您可以轻松地自己动手。我将它重命名为 AzureBlobDownloader.exe 并与包含的 Microsoft.WindowsAzure.StorageClient.dll 一起复制到我的 Web 项目的根目录中,并将“构建操作”none 和“复制到输出”设置为 总是。

    如果您仍然遇到问题,请尝试将远程桌面连接到您的实例中,并使用DebugView 之类的工具来监控正在发生的事情。

    【讨论】:

    • 我需要部署云服务或网络应用项目?
    【解决方案3】:

    首先在您的解决方案中创建一个名为“assets”的文件夹 将 CRRuntime_64bit_13_0.msi 复制到此文件夹中。 然后将以下代码放入您的 ServiceDefinition.csdef

    <Startup> <Task executionContext="elevated" taskType="simple" commandLine="assets/CRRuntime_64bit_13_0.msi"></Task> </Startup>

    这样你在加载你的应用程序之前在云服务器上安装水晶运行时。

    希望这对你有用。

    【讨论】:

    • 不,这行不通。我在 Azure 模拟器上试过。在模拟器上它给出了一个错误。
    【解决方案4】:

    绝对有可能;我们在 Azure 中托管了一个 SL 应用程序,并在 Azure VM 中运行了一个报表服务器(仍处于测试阶段,我们遇到了一些连接问题,但对测试版产品非常满意)。报表服务器通过 Windows 服务运行,我们有一个安装文件来处理安装 CR 运行时和我们的服务。然后该服务轮询我们的数据库以获取待处理的报告请求,然后根据需要对其进行处理。

    我们以 PDF 格式运行所有报告,因此用户只需下载 PDF。如果您在直接显示报告时遇到问题,您可以研究这种替代方法;这对我们很有用。

    【讨论】:

      【解决方案5】:

      到目前为止,Azure 不支持它。

      【讨论】:

      • 阅读本文的其他人请注意:这不是正确答案。 可能的 - 请参阅我的回答了解详情
      猜你喜欢
      • 2011-11-08
      • 1970-01-01
      • 2012-09-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-10
      • 2023-03-21
      • 1970-01-01
      相关资源
      最近更新 更多