SAP Crystal Reports Viewer无法在浏览器中显示。

4
我拥有一个使用框架4.5的ASP.NET Web项目。已经安装并实现了VS2012 Crystal Reports开发人员的SAP报表。
在本地报表中,它在浏览器(Chrome、Firefox、IE)中正常工作,并且数据正确显示。现在,在发布时(在另一台服务器上),我们所做的第一件事是安装相同版本的SAP,以便具备必要的库等。
我的问题是报表视图器块,我指的是报表容器,在浏览器中没有显示,打开包含此嵌入式内容的窗口,但在报表视图器中没有显示任何内容,甚至看不到报表。
考虑可能是数据错误或其他原因,我尝试更改报表并安排一个空白页面,只显示文本而没有连接或其他任何东西,并删除不在代码后面需要的代码,然后停止加载报表。
在新的本地环境下可以运行,但在Web发布中,报表查看器仍然无法显示。
有人能帮我解决一下这个问题吗?我正在寻找相关信息,但我在论坛中所找到的与报表未被显示有关,但没有任何关于报表视图器的信息。
非常感谢您的帮助。
附注:我已检查服务器日志以查找是否有任何问题或Asp.Net Crystal报表方面的错误,但没有发现任何异常。
7个回答

21

我有相似的问题,并找到了解决方案。

我认为在查找水晶报表格式化的默认Resource-Uri时存在一些问题。

为了正确格式化,请将此文件夹复制到您的项目中:C:\inetpub\wwwroot\aspnet_client\system_web\4_0_30319\crystalreportviewers13

并将这些行粘贴到您的web.config文件中。

<configSections>
<sectionGroup name="businessObjects">
  <sectionGroup name="crystalReports">
    <section name="rptBuildProvider" type="CrystalDecisions.Shared.RptBuildProviderHandler, CrystalDecisions.Shared, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304, Custom=null" />
       <section name="crystalReportViewer" type="System.Configuration.NameValueSectionHandler" />
  </sectionGroup>
</sectionGroup>
  </configSections>

<businessObjects>
  <crystalReports>
    <rptBuildProvider>
      <add embedRptInResource="true" />
    </rptBuildProvider>
    <crystalReportViewer>
          <add key="ResourceUri" value="/crystalreportviewers13" />
  </crystalReportViewer>
  </crystalReports>
</businessObjects>

点击此处

这将对你有所帮助。


4

解决方法... 100%有效。按照以下两个步骤操作:

1.更新应用程序文件夹。

将"C:\inetpub\wwwroot\aspnet_client\system_web\4_0_30319\crystalreportviewers13"拷贝到您的应用程序根目录下,如下快照所示。 enter image description here

  1. 通过以下代码更新Web.Config文件。

enter image description here


3
将文件夹"C:\inetpub\wwwroot\aspnet_client\system_web\4_0_30319\crystalreportviewers13"复制到您的应用程序根文件夹后,请确保您复制并粘贴以下提供的代码:
<configSections>
<sectionGroup name="businessObjects">
  <sectionGroup name="crystalReports">
    <section name="rptBuildProvider" type="CrystalDecisions.Shared.RptBuildProviderHandler, CrystalDecisions.Shared, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304, Custom=null" />
       <section name="crystalReportViewer" type="System.Configuration.NameValueSectionHandler" />
  </sectionGroup>
</sectionGroup>
  </configSections>

<businessObjects>
  <crystalReports>
    <rptBuildProvider>
      <add embedRptInResource="true" />
    </rptBuildProvider>
    <crystalReportViewer>
          <add key="ResourceUri" value="/crystalreportviewers13" />
  </crystalReportViewer>
  </crystalReports>
</businessObjects>

在web.config文件中< configuration >标签之后。对于我来说,任何其他地方都不起作用,并生成错误消息。

1
对我而言,网页开发工具(按F12然后选择Console标签)显示服务器在寻找root/aspnet_client/system_web/4_6_1069文件夹,而我已经将文件复制到了4_0_30319文件夹中。我重命名了文件夹,问题解决了!

0

对于我们中的那些运行从 .Net 4.0 或更低版本迁移的项目的人,我做出了观察。似乎如果包含查看器的页面位于子目录中,则图像 URL 是相对于该页面而不是 Web 应用程序的根目录生成的。例如,如果您的页面是 /gl/accounts.aspx,则图像可能是 /gl/crystalimagehandler.aspx 等。快速解决此问题的方法是将处理程序映射更改为以 crystalimagehandler.aspx 结尾的通配符,或将以下代码放入 Global.asax。

protected void Application_BeginRequest(object sender, EventArgs e)
        {
            var p = Request.Path.ToLower().Trim();
            if (p.EndsWith("/crystalimagehandler.aspx") && p!= "/crystalimagehandler.aspx")
            {
                var fullPath=Request.Url.AbsoluteUri.ToLower();
                var index = fullPath.IndexOf("/crystalimagehandler.aspx");
                Response.Redirect(fullPath.Substring(index));
            }
        }

0
我遇到了这样一种情况,我创建了一些使用连接“SQL Server Native Client 11.0”的Crystal Reports和一些使用连接“Microsoft OLE DB Provider for SQL Server”的Crystal Reports。在我们旧的运行IIS 6的服务器上,两者都可以正常工作。然而,当我们迁移到一个运行IIS 8.5的新服务器时,有些报表按预期工作,而其他报表则显示为空的Crystal Reports查看器。经过4-5天的绞尽脑汁和尝试我能想到的一切后,我最终比较了工作的报告与不工作的报告之间的所有内容。我发现工作的报告使用了“Microsoft OLE DB Provider for SQL Server”连接。一旦我做出了这个改变,报告就完美地呈现出来了。

0

我相信你需要将它部署为 .Net 4,而不是 .Net 4.5。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接