penley 发表于 2020-11-30 21:08:33

JSViewer无预览打印,动态绑定数据源时无法获取登录信息

本帖最后由 penley 于 2022-1-18 08:31 编辑

项目中需要无预览打印单据(不要查看,也不要导出pdf)。

GrapeCity.ActiveReports.JSViewer.print({ reportID: 'ReportDemo/演示报表.rdlx', reportParameters });

调用后,在定位数据源的方法中无法获取当前登录用户信息。会提示当前用户没有登录。

Startup.cs中,UseReporting的调用已经放在了认证、授权之后了。



说明:动态数据获取的方法没有问题,用viewer.print打印是正常的!

请问:无预览打印如何传递用户会话信息?



KearneyKang 发表于 2020-12-1 10:26:24

用户会话信息,你是需要在这里进行个传递报表参数还是别的什么需求GrapeCity.ActiveReports.JSViewer.print({ reportID: 'ReportDemo/演示报表.rdlx', reportParameters });

penley 发表于 2020-12-2 11:24:23

可能还是报表路径的问题,我将报表模板文件都直接放在了Reports下,就正常了。感谢!

KearneyKang 发表于 2020-12-2 11:53:36

好的,问题解决了就好

penley 发表于 2020-12-2 12:12:02

主要问题好像出在rdlx中记录的名称 和 报表模板的物理文件名不一致导致。


rdlx以xml文件打开,里面的名称,有的报表中没有这一行,有的和报表模板文件名相同,有的还有路径。这个有用吗?什么时间更新的呢?

KearneyKang 发表于 2020-12-2 15:19:04

这个,我还没有注意过这个XML打开的问题,我需要去试试

penley 发表于 2020-12-2 15:49:12

好像报表加载的时候,用的物理文件名称来定位。动态绑定数据源参数中拿到的是rdlx里的名称。

penley 发表于 2020-12-2 15:51:45

在app.UseReporting中的定位数据源方法中,有时候能拿到当前用户会话信息,有时候拿不到。我另一个同事的报表还是不行。

penley 发表于 2020-12-2 16:49:36



我在定位数据源的方法中,获取HttpContext。HttpContext居然有时候会出现null的情况,这也就导致下面的代码无法获取当前请求的用户信息。

假设我的报表文件为test.rdlx,我通过f12观察请求。我发现无预览打印发起了两次请求。

http://localhost:5000/api/reporting/reports/test.rdlx/export/pdf

http://localhost:5000/api/reporting/export/XrVxRJQ9mkebnFUnGmf46Q/test?

有时候会导致丢失上下文信息,导致应用无法在定位数据源的代码中获取当前用户信息。

KearneyKang 发表于 2020-12-2 18:40:54

有时候出现有时候不出现,出现和不出现的报表之间有什么不同之处吗?看起来这个问题比较诡异
页: [1] 2
查看完整版本: JSViewer无预览打印,动态绑定数据源时无法获取登录信息