彻底解决 CrystalReports 登录失败问题 (vs.net 2003)


彻底解决 CrystalReports 登录失败问题 (vs.net 2003)

 

最近接触到一个用vs.net 2003写的老项目,里边用到了水晶报表,在部署后运行时出现logon failed错误。

目录:
一、Crystal Reports 9 最新补丁下载(搜集:海波.NET)
二、原因1:文件夹 NTFS 权限的问题。
三、原因2:PULL 模式,水晶报表中的数据库登录问题(非 Windows 集成身份验证)。
四、原因3:PUSH 模式设置了 TableLogOnInfo,不需要!
五、出错:部署到其它计算机,产生问题:连接失败。错误的登录参数。
六、安全之道:crystalreport 的集成认证如何与NT(2K)SERVER集成?
七、原因4:PULL 模式,水晶报表中的数据库登录问题(Windows 集成身份验证)。
---------------------------------------------------------------
问题:
CrystalReports 登录失败
LogOnException

---------------------------------------------------------------
一、Crystal Reports 9 最新补丁下载
(1)Crystal Reports 9 Database and Export Drivers Monthly Hot Fix
http://support.crystaldecisions.com/communityCS/FilesAndUpdates/cr90dbexwin_en.zip.asp?recDnlReq=Record&dnlPath=cr90dbexwin_en.zip
(2)Crystal Reports 9 Developer Files Monthly Hot Fix
http://support.crystaldecisions.com/communityCS/FilesAndUpdates/cr90devwin_en.zip.asp?recDnlReq=Record&dnlPath=cr90devwin_en.zip
(3)Crystal Reports 9.0 Main Program Files Monthly Hot Fix
http://support.crystaldecisions.com/communityCS/FilesAndUpdates/cr90mainwin_en.zip.asp?recDnlReq=Record&dnlPath=cr90mainwin_en.zip
---------------------------------------------------------------
二、原因1:文件夹 NTFS 权限的问题。
1、水晶报表 Web 查看器文件夹 NTFS 权限的问题
(1)错误提示:
“/WebApplication1”应用程序中的服务器错误。
  登录失败。
  说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
  异常详细信息: CrystalDecisions.CrystalReports.Engine.LogOnException: 登录失败。
(2)相关文件夹:
VS.NET Crystal Reports: C:Program FilesMicrosoft Visual Studio .NETCrystal ReportsViewers
Crystal Reports 9.2: C:Program FilesCommon FilesCrystal Decisions2.0crystalreportviewers

2、水晶报表文件所在的文件夹,或者导出时的目标文件夹 NTFS 权限的问题
(1)错误提示:
登录失败。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: CrystalDecisions.CrystalReports.Engine.LogOnException: 登录失败。

3、设置上述文件夹的“安全”,即 NTFS 权限:
最简单的办法是给 Everyone 用户加“完全控制”权限!
(1)为当前用户,如:Administrator,,添加“写入”权限;
(2)为用户 ASPNET、SYSTEM、匿名用户(通常为 IUSR_MACHINENAME)、经过身份验证的请求用户添加“写入”权限。
---------------------------------------------------------------
三、原因2:PULL 模式,水晶报表中的数据库登录问题。
运行时登录数据库服务器的方法(PULL 模式)
在报表的cs文件中,加上数据库连接。
1、设置 ReportDocument 的 TableLogonInfo……
Dim  ReportDoc  As  New  ReportDocument() 
Dim  logonInfo  As  New  TableLogonInfo 
Dim  table  As  table 
ReportDoc.Load("C:Rptspublish.rpt") 
For  Each  table  IN  ReportDoc.DataBase.Tables 
               logonInfo=  table.LogonInfo 
               with  logonInfo.connectioninfo 
                   .serverName=  "Localhost" 
                   .Databasename=  "pubs" 
                   .UserID=  "sa" 
                   .Password="" 
               End  With 
               table.applyLogonInfo(logonInfo) 
next  table 
Crviewer.reportsource = reportDoc 

2、如果是多个相关的表作为报表的数据源,最好使用存储过程或者查询作为数据源。

3、将“数据库连接信息”存放在 web.config 配置文件,易维护。
using CrystalDecisions.Shared ; //负责解释TableLogOnInfo类
using CrystalDecisions.CrystalReports.Engine ; //负责解释ReportDocument类

private void Page_Load(object sender, System.EventArgs e)
{
TableLogOnInfo logOnInfo = new TableLogOnInfo ();
//这里必须事先申明一个ReportDocument对象 Report,同时加载数据报表
ReportDocument oRpt = new ReportDocument();
//获取.rpt文件真实路径
string path;
path=Server.MapPath ("cr.rpt");
oRpt.Load (path);

//从web.config中获取logOnInfo参数信息
string a,b,c,d;
//获取ServerName
a=System.Configuration.ConfigurationSettings.AppSettings ["servername"];
//获取DatabaseName
b=System.Configuration.ConfigurationSettings.AppSettings ["database"];
//获取UserId
c=System.Configuration.ConfigurationSettings.AppSettings ["userid"];
//获取password
d=System.Configuration.ConfigurationSettings.AppSettings ["pass"];
//设置logOnInfo参数
logOnInfo.ConnectionInfo.ServerName = a;
logOnInfo.ConnectionInfo.DatabaseName = b;
logOnInfo.ConnectionInfo.UserID = c;
logOnInfo.ConnectionInfo.Password = d;

oRpt.Database.Tables [0].ApplyLogOnInfo (logOnInfo);

//建立.rpt文件与CryStalReportviewer文件之间的连接
CrystalReportViewer1.ReportSource = oRpt;

DataBind();
}
---------------------------------------------------------------
四、原因3:PUSH 模式设置了 TableLogOnInfo,不需要!
因为数据源是 DataSet,不是数据库!
---------------------------------------------------------------
五、出错:部署到其它计算机,产生问题:连接失败。错误的登录参数。
在开发机(2000)上运行,一切正常;移植到生产机(2003),就报错。错误提示:连接失败。错误的登录参数。
解决方案:
部署包少了点东西:
Crystal_Database_Access2003.msm
Crystal_Database_Access2003_chs.msm
这两个合并模块包含各种连接数据源的驱动。所以少了它,就老是提示登录失败(这种提示是不是很莫名其妙?)
---------------------------------------------------------------
六、安全之道:crystalreport 的集成认证如何与NT(2K)SERVER集成??
--------------------------------------
安全三要素:
模拟,验证,授权
--------------------------------------
如果运行 ASP.NET 程序,还需要为 ASPNET 账号——运行 ASP.NET 模拟的账号,做下述设置:
1、通过 Web 访问服务器,访问者默认“模拟”的是——Internet 来宾帐号,账号名:IUSR_计算机名;
2、“IUSR_计算机名”账号要访问 SQL SERVER,必须为该帐号建立“登录”(验证也!);
3、并授予“服务器角色”和“数据库访问许可”、“数据库角色”(授权也)!
--------------------------------------
参考:
1、匿名访问 Web 所模拟的账号
账号名:IUSR_计算机名
全名:Internet 来宾帐号
描述:匿名访问 Internet 信息服务的内置帐号
2、运行 ASP.NET 模拟的账号
账号名:ASPNET
全名:aspnet_wp account
描述:运行 ASP.NET 工作进程的账号
---------------------------------------------------------------
七、原因4:PULL 模式,水晶报表中的数据库登录问题(Windows 集成身份验证)。
1、错误提示:
“/MyWebApp”应用程序中的服务器错误。
用户 'PYPC101ASPNET' 登录失败。
2、问题分析:
设计水晶报表时,在“数据库专家”的“连接信息”里使用了“集成安全”,即 Windows 集成身份验证。
3、解决方案:
要为 ASPNET 账号增加数据库登录和访问权限……
但这样不太适用,设计时最好使用数据库服务器的身份验证,用服务器的账号登录,比如:sa!
4、参考:三、原因2:水晶报表中的数据库登录问题。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: Crystal Reports for .NET Framework 2.0是一款用于.Net Framework 2.0的报表设计和生成工具。它是由SAP公司推出的一种灵活易用的报表工具,可用于生成高质量的企业级报表。 要下载Crystal Reports for .NET Framework 2.0,可以按照以下步骤进行: 1. 打开您的Web浏览器,并在搜索引擎中搜索Crystal Reports for .NET Framework 2.0下载。 2. 找到SAP官方网站或其它可信赖的软件下载网站。 3. 在搜索框中输入“Crystal Reports for .NET Framework 2.0”进行搜索。 4. 在搜索结果中找到适用于.Net Framework 2.0的Crystal Reports版本,通常会标明支持的软件版本。 5. 点击下载链接,将会开始下载安装程序到您的计算机中。 6. 下载完成后,双击安装程序并按照指示进行安装。 7. 在安装过程中,您可能需要接受软件许可协议和选择安装选项。 8. 等待安装完成后,您将能够在您的计算机上找到Crystal Reports for .NET Framework 2.0的程序图标。 9. 点击该图标启动Crystal Reports for .NET Framework 2.0。 Crystal Reports for .NET Framework 2.0提供了一套强大的工具和功能,使您能够轻松设计、生成和分发各种类型的报表。它支持多种数据源,包括数据库、Excel文件和Web服务。它还具有丰富的报表设计功能,如图表、子报表、条件格式化和参数等。此外,它还可以将报表导出为PDF、Word和Excel文件格式,方便与他人共享和打印。 总之,通过按照上述步骤下载和安装Crystal Reports for .NET Framework 2.0,您将能够轻松使用这款强大的报表工具来满足您的报表设计和生成需求。 ### 回答2: Crystal Reports for .NET Framework 2.0是一款强大的报表生成工具,可以与.NET Framework 2.0一起使用。通过使用Crystal Reports,开发人员可以轻松地在应用程序中创建、编辑和展示专业的报表。 要下载Crystal Reports for .NET Framework 2.0,您可以按照以下步骤进行操作: 1. 打开您的Web浏览器,并访问SAP官方网站。 2. 在网站的搜索栏中输入"Crystal Reports for .NET Framework 2.0下载",然后点击搜索按钮。 3. 在搜索结果中,找到官方的Crystal Reports for .NET Framework 2.0下载页面,并点击进入。 4. 在下载页面中,您会看到不同版本的Crystal Reports。请确保选择适用于.NET Framework 2.0的版本。 5. 单击下载链接,然后选择保存文件的位置。 6. 下载完成后,找到保存的文件,并双击运行安装程序。 7. 按照安装向导中的指示,完成Crystal Reports for .NET Framework 2.0的安装过程。 安装完成后,您就可以在.NET Framework 2.0的开发环境中使用Crystal Reports了。它提供了丰富的功能和工具,让您能够灵活地设计和生成各种类型的报表。 总之,Crystal Reports for .NET Framework 2.0是一款非常实用的报表生成工具,可以帮助开发人员快速创建专业的报表。通过按照上述步骤下载和安装,您可以轻松地开始使用它。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mobidogs

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值