c#rd.Load(loadPath); 在本地工作,但不能在服务器上工作?

2020-09-06 19:54发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)我希望有一个aspx页面,可以将...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我希望有一个aspx页面,可以将其传递给简单的url参数,然后再加载.rpt文件。

这在运行Win10的本地开发机器上完美运行。 如果我像report1.aspx或report2.aspx这样运行报告,则报告运行良好

如果我以 website.com/report1.aspx?report=" report2.aspx ",它将忽略传递的参数,而是加载report1.aspx(与运行IIS的win10框中的行为完全不同)。 我已经在IIS8服务器和IIS 10服务器(Win 10也运行IIS 10)上都尝试过。

我不明白为什么Crystal在一台机器上接受传递的参数,而在另一台机器上不接受?

添加某种调试后,可以在本地看到,我可以正确获取参数,但是在服务器上,参数字符串永远不会被看到 aspx页面。

3条回答
浮生未央
2020-09-06 20:42

该报告在本地计算机上运行正常(两者均作为VS中的IIS Express和本地IIS [localhost/report.aspx]),它不执行的工作就是在服务器上的查询字符串中保留发送给它的参数(这似乎仅在使用CrystalReportViewer的页面上发生)。

服务器是一台崭新的服务器 已安装了2016年运行IIS 10的服务器。所有可再发行文件都就位,并且报表再次运行,它只是删除了我传递给页面的所有参数。

目标是能够在同一文件夹中拥有多个报告,并且只需通过传递带有文件名的参数即可调用它们。

使用系统;
 使用System.Collections;
 使用System.Web.UI;
 使用CrystalDecisions.Web;
 使用CrystalDecisions.CrystalReports.Engine;

 命名空间示例
 {
     公共局部类WebForm1:System.Web.UI.Page
     {
         受保护的void Page_Load(对象发送者,EventArgs e)
         {
             字符串调试= String.Empty;

             如果(!Page.IsPostBack)
             {
                
                 CrystalReportViewer crv = CrystalReportViewer1;
                 ReportDocument rd = new ReportDocument();
                 哈希表h = getURIParam(1);
                 字符串loadPath = String.Empty;
                                
                 如果(h!= null)
                 {
                     debug =" 
参数字符串为" + h [" report"]。ToString()。ToLower(); 如果(h [" report"]。ToString()。ToLower()。EndsWith("。rpt")) { loadPath = @" C:\ inetpub \ wwwroot \ crviewers \ rpt \" + h [" report"]。ToString(); } 其他 { loadPath = @" C:\ inetpub \ wwwroot \ crviewers \ rpt \" + h [" report"]。ToString()+" .rpt"; } } 其他 { debug ="
参数字符串为空"; loadPath = @" C:\ inetpub \ wwwroot \ viewers \ rpt \ example.rpt"; } 尝试 { debug =调试+"
loadpath =" + loadPath; rd.Load(loadPath); crv.ReportSource = rd; } 捕获(CrystalDecisions.Shared.CrystalReportsException ex) { Label1.Text ="找不到报告的路径:" + loadPath; Label1.Visible = true; } 抓住(前例外) { Label1.Text ="发生未处理的异常,请在服务台中打开故障单,其中包含以下错误

Trace:" + ex.ToString(); Label1.Visible = true; crv.Visible = false; } Label2.Text =调试; Label2.Visible = true; } 其他 { Label2.Text =调试+"
这是回发"; Label2.Visible = true; } } 私有Hashtable getURIParam(int v) { 尝试 { Hashtable h = new Hashtable(); 字符串参数= Request.QueryString [" report"]; 如果(!String.IsNullOrEmpty(param)) { h.Add(" report",param); 返回h; } 否则返回null; } catch(异常e) { 返回null; } } } }

一周热门 更多>