0

我们已经研究这个问题好几天了,似乎无法解决它。想知道其他人是否可以提供帮助。我们有一个 .NET 应用程序,它使用:

CrystalDecisions.CrystalReports.Engine 版本:12.0.2000.0

CrystalDecisions.Shared 版本:12.0.2000.0

我们使用系统 DSN 连接到部署应用程序的产品服务器上的 Sql Server。它使用 Sql Server 版本 6.00.6002.18005 作为数据源。它工作得很好。该服务器是 32 位的 Windows Server Enterprise SP2。

当我们将它部署在测试盒上时,它是 Windows Server 2008 R2 64 位。System Dsn Sql Server 版本为 6.01.7601.17514。我安装了更新:

SAP Crystal Reports,Microsoft Visual Studio SP5 的开发人员版本 - MSI(64 位)

然后我们使用: CrystalDecisions.CrystalReports.Engine 版本:13.0.2000.0 CrystalDecisions.Shared 版本:13.0.2000.0

我收到登录错误:CrystalDecisions.CrystalReports.Engine.LogOnException:数据库登录失败。

这是我正在使用的 .Net 代码:

 using (ReportDocument rd = new ReportDocument())
        {
            if (reportType == "Current")
                rd.Load(Server.MapPath("~/bin/Reports/MyLoan_MonthlyBillingStatement_CurrentMonth.rpt"));
            else
                rd.Load(Server.MapPath("~/bin/Reports/MyLoan_MonthlyBillingStatement_History.rpt"));


            DataSourceConnections dsc = rd.DataSourceConnections;


            IConnectionInfo connInfo = dsc[0];
            connInfo.SetLogon("creds here", "creds here");
            rd.SetParameterValue("month", month);
            rd.SetParameterValue("year", year);                

This is where the error hits:               
                oStream =     (MemoryStream)rd.ExportToStream(ExportFormatType.PortableDocFormat);

            string filename = string.Format("{0}_{1}.pdf", loanId, reportDate.ToString("m_d_yyyy"));


            Response.Buffer = true;
            Response.Clear();
            Response.AddHeader("content-disposition", "attachment; filename=" + filename);
            Response.ContentType = "application/pdf";
            Response.BinaryWrite(oStream.ToArray());


            oStream.Flush();
            oStream.Close();
        }

我们已经确认端口是开放的,我们可以telnet到系统dsn中使用的sql server。此外,我们的 Crystal Reports 开发人员使用 Crystal Report 并运行它(独立运行,而不是在 .net 应用程序中),它连接并运行良好。我难住了。我认为这是系统 dsn 中水晶报告 dll 和 sql server 版本的问题。任何帮助将不胜感激。

谢谢!布赖恩

4

1 回答 1

1

服务器是 64 位的。我安装了 64 位 Crystal Reports 驱动程序更新(我之前安装了 32 位更新)。在 IIS 应用程序池中,在高级设置下有一个设置,启用 32 位应用程序。它被设置为真。我把它改成了假的。然后它起作用了。

于 2013-09-27T20:38:53.000 回答