IIS中的Crystal Report问题 - (bobj未定义,Crystal报表未显示)

21
我已经安装了VS 2010并且也安装了Crystal Report 2010,我创建了一个报表,在本地主机上运行良好。但问题是,一旦我将网站发布到IIS后,报表就不显示了,只显示一个空白页面。我检查了我的发布文件夹,即使.rpt文件也不存在。有人能告诉我如何解决这个问题吗?
18个回答

40

解决方案

解决方案是这样的:使用IIS工作:

  • c:\inetpub\wwwroot文件夹中复制aspnet_client文件夹新网站根目录

或者(第一个更容易,第二个更好维护)

  • 创建一个虚拟目录,名称为aspnet_client,指向c:\inetpub\wwwroot\aspnet_client 位于新网站内部

问题分析

可以通过以下方式分析问题

  • 使用客户端工具(浏览器的调试窗口 )

GET http://someserver:20080/aspnet_client/system_web/4_0_30319/crystalreportviewers13/js/crviewer/crv.js 403 (Forbidden)
GET http://someserver:20080/aspnet_client/system_web/4_0_30319/crystalreportviewers13/js/crviewer/images/style.css 403 (Forbidden)

  • 或者服务器工具(IIS日志,在WIN2003上位于%SYSTEMROOT%\System32\LogFiles\W3SVC###\,在WIN2008上为C:\inetpub\logs\LogFiles\W3SVC###)。
日期:2011年3月28日,时间:13:00:49,W3SVC701536,IP地址:95.228.38.41,请求方式:GET,请求URL:/aspnet_client/system_web/4_0_30319/crystalreportviewers13/js/crviewer/images/style.css,状态码:20080,客户端IP地址:192.168.1.2,浏览器信息:Mozilla/5.0+(compatible;+MSIE+9.0;+Windows+NT+6.1;+Trident/5.0),错误代码:403 6 64 Errore!
日期:2011年3月28日,时间:13:00:49,W3SVC701536,IP地址:95.228.38.41,请求方式:GET,请求URL:/aspnet_client/system_web/4_0_30319/crystalreportviewers13/js/crviewer/crv.js,状态码:20080,客户端IP地址:192.168.1.2,浏览器信息:Mozilla/5.0+(compatible;+MSIE+9.0;+Windows+NT+6.1;+Trident/5.0),错误代码:403 6 64 Errore!

问题原因

Crystal Reports运行时已安装,但您的应用程序未在默认网站下运行。

  • 在两种情况下,我发现crv.jsstyle.css这些文件未被提供;
  • 这些文件由CR安装程序放置在wwwroot\aspnet_client文件夹中,但由于某些原因,它们无法被访问;
  • 在我的情况下,原因是我创建了一个不同的网站(端口为20080),并且aspnet_client文件夹没有放置在该网站内部

我可以看到您使用不同版本的软件和不同的配置,但我认为您有相同的问题


非常感谢您的帮助。在找到您的答案之前,我花了很长时间才解决了这个问题。问题确实出在我使用了额外的 Web 应用程序而不是默认的 Web 应用程序上。 - Dean Martin
我已经安装了Crystal报表,并在一些桌面应用程序中使用它。现在我正在尝试在ASP MVC中实现它。问题是我没有c:\inetpub\wwwroot文件夹。我也搜索了我的计算机以寻找aspnet_client文件夹,但它不存在。我该怎么办? - Alexander
我在一些示例项目中找到了 aspnet client 文件夹,只需复制粘贴即可运行! - Alexander
正确的做法是将IIS wwwroot复制到新的IIS文件夹中。 - toha

4
这个问题对我来说很难解决。
我的配置是VS 2010,CR 14.0.2000.0版本,Window Server 2008 R2,IIS 7。 我找到了解决办法。我尝试了网上提供的几乎所有解决方案,并实施了所有技巧。最终,通过在web.config中注释掉下面一行,报告得以显示。
<add key="ResourceUri" value="/crystalreportviewers13"></add>

现在我正在逐个删除已安装的内容,并检查确切所需的内容。

我试过以下所有方法:

  • 安装了CRRuntime_32bit_13_0_4和CRRuntime_64bit_13_0_4的CR Runtime。
  • 后来我移除了CRRuntime_32bit_13_0_4,但仍然可以正常运行。
  • 将aspnet_client文件夹放置在WWWRoot文件夹中。
  • 将aspnet_client文件夹放置在我的应用程序文件夹中。

每次进行更改时,我都重新启动了IIS。


将 aspnet_client 文件夹放置在我的应用程序文件夹中就足以解决“bobj”问题! - Emanuele Greco
我已经安装了Crystal报表,并在一些桌面应用程序中使用它。现在我正在尝试在ASP MVC中实现它。问题是我没有c:\inetpub\wwwroot文件夹。我也搜索了我的计算机以寻找aspnet_client文件夹,但它不存在。我该怎么办? - Alexander
我在某个示例项目中找到了 aspnet client 文件夹,只需复制粘贴它,就可以使用了! - Alexander
@Antony 这个在服务器上对我有用,非常感谢。 - José MN

3
这个问题的最佳答案在这里! http://social.msdn.microsoft.com/Forums/en-US/vscrystalreports/thread/ef56f72b-7ede-47d8-ba9e-9e63b9ac0203
  1. 你需要使用Web应用程序项目,而不是网站项目,因为Web App会将DLL合并到项目中。
  2. 将C:\inetpub\wwwroot\aspnet_client\system_web\4_0_30319\crystalreportviewers13(安装CRforVS_redist_install_32bit_13_0.exe时会得到)复制到您的项目中,例如(ProjectName/crystalreportviewers13)
  3. 将以下内容复制到您的web.config文件中

3.1

<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>

3.2

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

3.4 使用FTP模式发布您的Web应用程序到任意文件夹,并将此发布复制到您的Web服务器,然后进行测试!


1
虽然这个链接可能回答了问题,但最好在此处包含答案的基本部分并提供参考链接。如果链接页面更改,仅有链接的答案可能会失效。- 来自审查 - Mosh Feu
踩一下真的有必要吗?在我提供的链接中已经有了答案,好吧,我应该在这里插入部分答案,但我的回答仍然回答了问题。 - rochasdv

1

有一个令人难以置信的简单原因也会导致这种情况发生,那就是服务器未正确配置,这意味着,在服务器角色/Windows功能下的常见HTTP功能中未启用静态内容。

Enabling Static content


0

我知道这篇文章有点老了,但我认为像我这样的新手可以从中获得帮助。将此代码添加到您的web.config文件中,并将“crystalreportviewers13”文件夹从“c:\ inetpub \ wwwroot \ aspnet_client”复制到您的根目录。

<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>

0
在包含Crystal Report的aspx文件中添加以下代码。
<script src="../../aspnet_client/system_web/4_0_30319/crystalreportviewers13/js/crviewer/crv.js" type="text/javascript" > 
</script>

同时将 c:\inetpub\wwwroot 文件夹中的 aspnet_client 文件夹复制到新网站根文件夹中。

这种方法解决了以下两个问题,现在已经正常工作:

  1. bobj 未定义。
  2. Crystal 报表无法显示。

0

我也遇到了同样的问题,已经解决。当网站通过 IIS 托管时,Web.config 需要有以下设置:

    <add key="ResourceUri" value="~/crystalreportviewers13"/>

当网站通过Visual Studio托管时,

    <add key="ResourceUri" value="/crystalreportviewers13"/>

0

设置

<compilation debug="false">

在 web.config 中对我有用。


0

0

首先手动将rpt文件发布到服务器上的文件夹中。如果可以正常运行,那么问题很可能是部署方面的。尝试确保单击文件时的构建操作为“内容”。试试看是否可以进一步解决问题。


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