我有一台远程服务器(例如:192.168.8.8)和一台本地服务器。我可以运行本地服务器上的水晶报表,而不会出现任何问题。
但是当我尝试在远程服务器上运行时,它会引发 Load Report Failed (加载报告失败)错误。
这是我的代码:
CrystalReport.cs
protected void CrystalReportViewer1_Init(object sender, EventArgs e)
{
ReportDocument _rdStudents = new ReportDocument();
string reportPath = Server.MapPath("~" + Request.QueryString["filename"].ToString());
//string reportPath = Request.QueryString["filename"].ToString();
_rdStudents.Load(reportPath);
CrystalReportViewer1.ReportSource = _rdStudents;
}
CrystalReport.aspx
<%@ Register Assembly="CrystalDecisions.Web, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" Namespace="CrystalDecisions.Web" TagPrefix="CR" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<script src="js/jquery-3.1.1.js"></script>
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<CR:CrystalReportViewer ID="CrystalReportViewer1" runat="server" AutoDataBind="true" Height="962px" ToolbarImagesFolderUrl="" ToolPanelWidth="200px" Width="1344px" HasRefreshButton="True" ToolPanelView="ParameterPanel" OnInit="CrystalReportViewer1_Init" />
</div>
</form>
</body>
</html>
我的报告位置为 // 192.168.8.8/c$/inetpub/wwwroot/CrystalReportFiles/Test/Report1.rpt
我检查了此crystal-reports-load-report-failed-error-running-report-on-the-server链接。
我不会使用 Report FileName (报告文件名)属性直接运行报告。
我尝试了两种类别
string reportPath = Server.MapPath("~" + Request.QueryString["filename"].ToString()); //filename = /CrystalReportFiles/Test/Report1.rpt
string reportPath = Request.QueryString["filename"].ToString(); //filename=//192.168.8.8/c$/inetpub/wwwroot/CrystalReportFiles/Test/Report1.rpt
我已授予对c:\ Windows \ Temp 的访问权限,以完全控制(IIS_IUSRS,USERS,Everyone)
我安装了 CRforVS_13_0_20
更新
我的远程服务器和本地服务器上也都具有CrystalReport.aspx文件
通过将文件路径(
//192.168.8.8/c$/inetpub/wwwroot/CrystalReportFiles/Test/Report1.rpt
)的参数传递到CrystalReport.aspx
(本地服务器)。我可以运行报告但是我无法通过相同的路径从 RemoteServer(192.168.8.8)上的
CrystalReport.aspx
运行