1

我有 2 个 Visual Studio 2010 项目,它们以不同的方式使用 Crystal 报告版本 13.02。

1个有效,另一个object reference not set to an instance of an object出现错误。

第一个应用程序是我从头开始开发的一个 Web 应用程序,它使用了几个现有的水晶报表,并且正在使用水晶报表查看器工作。它是一个使用asp.net 4.0 frameworkin的 Web 应用程序项目c#

另一个项目是一个较旧的 VB 网站项目,我从该项目升级.net 2.0到该项目4.0并且工作正常,直到我不得不将其升级到 13.02。该项目不使用查看器,仅将数据打印到报告中。在我在 Visual Studio 下的开发笔记本电脑上,它可以正常运行和打印,但在发布到我的笔记本电脑IIS 7.5和服务器的IIS 7.5.

我收到此错误并已用尽所有可能的选项。它不能作为驱动程序,因为 Web 应用程序项目在我的机器和服务器上都可以正常工作。我怀疑在找到答案之前我将被迫将项目转换为 Web 应用程序项目......但我更愿意找到一个答案来解决它。

更新 经过进一步调试,我发现问题出在 PrintToPrinter 方法上,该方法再次在开发模式下工作正常,但在发布时却不行。

4

3 回答 3

1

您的 VB 应用程序的 web.config 文件是否包含所有必要的 Crystal 引用?在过去的几天里,我一直在学习它非常古怪。

于 2013-09-06T16:50:11.153 回答
1

已解决的问题 尽管打印机在那里,但确实没有找到打印机。这是因为 IIS 没有与用户相同的资源访问权限,这是理所当然的,并且需要通过默认用户密钥下的注册表项或打印机的安全选项来授予访问权限,或者需要将打印机的安全选项设置为 IIS 帐户以在 Web 应用程序正在使用的应用程序池中,在 IIS 下的 Identity 选项下进行设置。

此链接SAP 站点也详细介绍了完整的过程 ,结果是两倍。

  1. 我使用此代码片段循环遍历所有可用的打印机(我从 SAP 复制并粘贴了它,我在我的应用程序中使用了 C# 并创建了一个要添加的列表框)并在打印过程中将它们显示在网页上:

    Dim myPrinter As String 
    For Each myPrinter In System.Drawing.Printing.PrinterSettings.InstalledPrinters
    
             add  to list
    Next
    
  2. 在 Web 服务器下,通过计算机管理,我将本地服务 IIS id 添加到Print Operators组。

  3. 在 IIS 下,使用网站正在使用的应用程序池的“高级设置”,我将 Identity 字段更改为LocalService

  4. 我通过再次运行代码片段验证打印机现在可用,它是,然后打印报告,它运行并打印正常。

找到这个答案需要一段时间,如果没有提供的帮助引导我找到答案,我是无法到达那里的。我希望这对其他人有帮助。

于 2013-09-16T14:19:19.250 回答
0

您需要在生产服务器上下载并安装 CR。*.msi

例如:CRRuntime_64bit_13_0.msi

于 2013-09-05T22:11:04.393 回答