找回密码
 立即注册

QQ登录

只需一步,快速开始

KSDY_LZQ

初级会员

22

主题

46

帖子

228

积分

初级会员

积分
228
KSDY_LZQ
初级会员   /  发表于:2022-9-15 13:50  /   查看:1262  /  回复:6
10金币

上面是web项目部署到服务器之后请求的网址。
正常返回的的请求返回和url的文件名一致的模板
但是现在遇到这种情况就是:刷新网页的时候,如果有其他用户请求其他的文件,界面渲染就变成其他用户请求的。

  1. public partial class ReportToPrint : System.Web.UI.Page
  2.     {
  3.         protected void Page_Load(object sender, EventArgs e)
  4.         {
  5.             if (!IsPostBack)
  6.             {
  7.                 this.Session["orderNumber"] = Request.QueryString["orderNumber"];
  8.                 this.Session["RdlxName"] = Request.QueryString["RdlxName"];
  9.                 this.Session["PrintFlag"] = Request.QueryString["PrintFlag"]==null?"A" : Request.QueryString["PrintFlag"];
  10.                 this.Session["FaccID"] = Request.QueryString["FaccID"] == null ? "" : Request.QueryString["FaccID"];
  11.                 this.Session["Parameter"] = Request.QueryString["Parameter"] == null ? "" : Request.QueryString["Parameter"];

  12.                 FileInfo path = new FileInfo(Server.MapPath("/RdlReports/" + this.Session["RdlxName"].ToString()));
  13.                 GrapeCity.ActiveReports.PageReport report1 = new GrapeCity.ActiveReports.PageReport(path);
  14.                 //绑定数据源
  15.                 report1.Document.LocateDataSource += Document_LocateDataSource;
  16.                 //绑定参数
  17.                 if (this.Session["Parameter"] != null)
  18.                 {
  19.                     bindReportParam(report1, this.Session["Parameter"].ToString());
  20.                 }
  21.                
  22.                 arvWebMain.PdfExportOptions.FitWindow = true;
  23.                 arvWebMain.PdfExportOptions.DisplayMode = GrapeCity.ActiveReports.Export.Pdf.Section.DisplayMode.Outlines;
  24.                 arvWebMain.ViewerType = ActiveReports.Web.ViewerType.HtmlViewer;
  25.                 arvWebMain.DisplayMode = ActiveReports.Web.DisplayMode.Continuous;
  26.                 arvWebMain.Report = report1;

  27.             }
  28.         }

  29.         private void Document_LocateDataSource(object sender, LocateDataSourceEventArgs args)
  30.         {
  31.             if (this.Session["PrintFlag"].ToString().Contains("JSON"))//行记录为多数据确定
  32.             {
  33.                 Business.GetData.setARDataJson(args,
  34.                    this.Session["RdlxName"].ToString(),
  35.                    this.Session["orderNumber"].ToString(),
  36.                    this.Session["PrintFlag"].ToString(),
  37.                    this.Session["FaccID"].ToString());//K3账套

  38.             }
  39.             else
  40.             {
  41.                 //多选模式','分割--B
  42.                 if (this.Session["PrintFlag"].ToString() == "B"|| this.Session["PrintFlag"].ToString().Contains("B_"))
  43.                 {
  44.                     string orderNumber = this.Session["orderNumber"].ToString();
  45.                     orderNumber = orderNumber.Trim();
  46.                     if (orderNumber.LastIndexOf(",")+1 == orderNumber.Length)
  47.                     {
  48.                         orderNumber = orderNumber.Substring(0, orderNumber.Length - 1);
  49.                     }
  50.                     orderNumber = "'" + orderNumber.Replace(",", "','") + "'";
  51.                     orderNumber = orderNumber.Replace("''", "'");
  52.                     this.Session["orderNumber"] = orderNumber;
  53.                 }

  54.                 Business.GetData.setARData(args,
  55.                     this.Session["RdlxName"].ToString(),
  56.                     this.Session["orderNumber"].ToString(),
  57.                     this.Session["PrintFlag"].ToString(),
  58.                     this.Session["FaccID"].ToString());//K3账套
  59.             }
  60.             
  61.         }
  62.         private void bindReportParam(PageReport report1,string Parameter)
  63.         {
  64.             string[] param_s = Parameter.Split(',');
  65.             if (param_s.Length == report1.Report.ReportParameters.Count)
  66.             {
  67.                 for (int i = 0; i < param_s.Length; i++)
  68.                 {
  69.                     report1.Report.ReportParameters[i].DefaultValue.Values.Clear();
  70.                     report1.Report.ReportParameters[i].DefaultValue.Values.Add(param_s[i]);
  71.                 }
  72.             }
  73.             else
  74.             {
  75.                 Console.Write(report1.Report.Name + "参数与url不符!");
  76.             }
  77.             
  78.         }


  79.     }
复制代码
上图为后台绑定

附件: 您需要 登录 才可以下载或查看,没有帐号?立即注册

6 个回复

倒序浏览
Felix.LiWyn认证
超级版主   /  发表于:2022-9-15 19:36:44
沙发
你先试一下在第八行那里打一个断点,看一下RdlxName是不是已经变了,如果这里变了肯定会就是请求的传值有问题,请求传过来的已经有问题了,检查一下前段传的值是不是哪里每次用了一个全局参数,然后被新用户访问的时候修改了。
回复 使用道具 举报
KSDY_LZQ
初级会员   /  发表于:2022-9-16 08:39:05
板凳
Felix.Li 发表于 2022-9-15 19:36
你先试一下在第八行那里打一个断点,看一下RdlxName是不是已经变了,如果这里变了肯定会就是请求的传值有问 ...

我试了一下 按“F5”会进入我上面的代码段,可以正常代入模板文件。
而点击工具栏上面的“刷新” 不会进代码段,而且会渲染所有请求中最近的一次
测试:(我开了两个模板(A/B),先请求A,后请求B,然后在A点‘刷新’就显示B的模板)
生产环境:有反应弹出来的新页面就不是正确的模板。(待确认)
回复 使用道具 举报
wengMQ悬赏达人认证
银牌会员   /  发表于:2022-9-16 11:37:00
地板
是不是session被覆盖了??
回复 使用道具 举报
Bella.YuanWyn认证
超级版主   /  发表于:2022-9-16 12:17:46
5#
wengMQ 发表于 2022-9-16 11:37
是不是session被覆盖了??

感谢老铁回复,目前推测也有可能是这个原因,您可以先检查一下。
回复 使用道具 举报
KSDY_LZQ
初级会员   /  发表于:2022-9-16 12:54:10
6#
wengMQ 发表于 2022-9-16 11:37
是不是session被覆盖了??

不知道是不是session的问题,生产环境说的 新页面串模板的现象没有复现。
但是复现了点击工具栏的的刷新会渲染最后一次请求的问题(上面提到的),直接点地址刷新的是正常的。
所以webview展示的话 是怎么限制工具栏的刷新不显示,还是只能通过jsview的方式来限制
回复 使用道具 举报
Bella.YuanWyn认证
超级版主   /  发表于:2022-9-16 19:00:56
7#
KSDY_LZQ 发表于 2022-9-16 12:54
不知道是不是session的问题,生产环境说的 新页面串模板的现象没有复现。
但是复现了点击工具栏的的刷新 ...

您好,建议您使用jsviewer,您可以按下面的代码移除刷新按钮
  1. viewer.toolbar.desktop.removeItem('$refresh');
复制代码

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部