解决方案:从C#app调用Crystal Report导致“数据库登录失败”或“加载报告失败”

问题描述 投票:0回答:1

因此本周早些时候我不得不更新一些使用Crystal Reports的旧代码,每次我尝试更新代码时,我都会收到“加载报告失败”或“数据库登录失败”。

如果你碰到了那些,你会非常清楚它们只是“抓住所有”的异常,从水晶报告dlls中冒出来。每个三个简单的单词,它们可以字面意思是几十个可能的问题中的任何一个......而不仅仅是你所看到的。

数据库登录失败:可能是您的登录错误;可能是您的数据源在报告中设置不正确;可能是您的报告中的字体不受支持。你不知道,因为它不会告诉你!

加载报告失败:可能是您的报告路径不正确;可能是您的用户没有Windows / temp文件夹的权限。可能是报告已损坏。但你知道吗?没有!你只会知道“加载报告失败”。

那么如果你得到其中一个,你会怎么做?

c# crystal-reports
1个回答
0
投票

我推荐以下两件事,它们可以让你记录ACTUAL错误,看看世界上刚刚发生了什么。下面列出的每个建议的来源的相关链接:

1)去抓取sysinternal的“Process Monitor”或“Procmon”。谷歌公司/产品,如果你不熟悉;它通常被认为是安全可靠的,但在继续之前为自己做出决定。有关于如何使用它的youtube视频,但如果你经常处理专有的dll,这个工具将在未来使你的开发寿命提高100000倍。

2)这是大人物。首先,让我们确认一下这对您有用。在遇到麻烦的机器上,跳过C盘(或你的东西上的任何驱动器)并搜索一个名为“crlogger.dll”的dll如果你拥有它:你很幸运!如果没有...我很抱歉:(您可以尝试以下,但它可能无法正常工作。

Lets add some logging!

跳到您的系统属性 - >环境变量。将以下3添加到系统变量中:

LOGGING_DIR = c:\ logging

LOGGING_ENABLED_ASSERT = 1

LOGGING_ENABLED_RUNTIME = 30

保存,如果该文件夹不存在(或将上面的内容设置为其他目录),请进入该文件夹并返回到您的应用程序。做你做的任何事情来打破它。现在跳回到日志文件夹和tada!你现在有了ACTUAL日志。您可以调试真实的实际错误。

就我而言,我遇到了这两个错误。

加载报告失败:我安装了64位CR运行时,但不是它正在寻找的32位。我安装了,这个错误被打败了。

数据库登录失败:我查看了日志,发现“Microsoft SQL Server Native Client 11.0说明:客户端不支持加密。”。事实证明这是两件事,procman帮助我确定:

1)当我有Client 11时,我没有足够新的版本。我去了一个更新的安装程序,特别是“Microsoft® SQL Server® 2012 Native Client - QFE”安装程序。 (我们有2016年,但没有2016年本地客户)

2)I had to add some registry keys!这是通过Process Monitor无法找到这些密钥而显而易见的。

无论如何,这应该让你回到路上。现在你不必猜测出了什么问题,并且实际上可以开始解决问题了。

对于你们许多人来说,这篇文章现在没有必要。但是我希望能够提高可视性,因为有一天,其他一些可怜的开发人员会像我一样拉扯几个全能的人后,最终会找到解决方案。在我找到日志记录之前,我花了近30个小时来解决这个问题,然后在1小时后修复了问题,因为我确实有可操作的项目可以处理。

祝你好运!

© www.soinside.com 2019 - 2024. All rights reserved.