我已经搞砸了很多,但没有找到任何解决方案。 我使用Visual Studio 2012与My Sql作为数据库和Crystal报表。 我在WINDOWS SERVER 2008上部署了Web应用程序,当我从远程访问它时,它会给出以下错误消息,如下面的屏幕所示。
我使用以下代码
string databaseName = "hr";
string serverName = "192.168.137.6";
string userID = "userID";
string pass = "xxxxxxxxxxx";
protected void btn_search_Click(object sender, EventArgs e)
{
CrystalReportViewer1.Visible = true;
ReportDocument reportDocument = new ReportDocument();
string reportPath = Server.MapPath(@"~/GeneralEmpReports/test.rpt");
reportDocument.Load(reportPath);
reportDocument.SetParameterValue("D", tbx_ddoCode.Text.ToUpper());
reportDocument.SetDatabaseLogon(userID, pass, serverName, databaseName);
CrystalReportViewer1.ReportSource = reportDocument;
}
此处我想补充一点,只有 存储过程 会给我上述错误,如果我从 表 < / strong>然后没有错误并且执行完美。我通过Navicat工具(用于mysql的GUI管理工具)检查了存储过程,它工作正常。
我在服务器上通过控制面板添加了以下连接==&gt;管理工具==&gt;数据源(ODBC),如下图所示。
答案 0 :(得分:0)
经过大量搜索,我发现我在 服务器名称 中犯了错误, 服务器名称应为 DSN 名称不是 IP地址 。在生产服务器上创建 系统DSN 名称,与开发计算机中给出的名称相同,如下所示。
数据来源名称: DSN_Name
TCP / IP服务器:在开发PC中将其空白表示 localhost ,但在开发服务器中提供IP地址。
用户:用户名
Paswword:密码
数据库:数据库名称
以下是可以正常使用的代码。
string databaseName = "hr";
string serverName = "hr_domain"; // DSN Name
string userID = "xxxxxxx";
string pass = "xxxxxxxx";
protected void btn_search_Click(object sender, EventArgs e)
{
CrystalReportViewer1.Visible = true;
ReportDocument reportDocument = new ReportDocument();
string reportPath = Server.MapPath(@"~/GeneralEmpReports/test.rpt");
reportDocument.Load(reportPath);
reportDocument.SetDatabaseLogon(userID, pass, serverName, databaseName);
reportDocument.SetParameterValue("D", tbx_ddoCode.Text.ToUpper());
CrystalReportViewer1.ReportSource = reportDocument;
}