ASP.NET Core集成SSRS:如何传递系统登录用户参数至报表?
在SSRS报表中展示本系统登录用户的方案
要实现这个需求,通过参数传递是最直接的方式,具体操作分四步:
1. 在SSRS报表中创建专用参数
打开报表设计器,添加一个文本类型的参数,命名为@CurrentSystemUser。将参数的「提示」设置为空(避免用户手动输入),同时关闭「允许空值」「允许空白值」选项,确保参数只能由外部传入。2. 在业务系统端传递用户参数
在你调用SSRS报表的业务系统代码里,先获取当前登录的本系统用户账号/名称,再把这个值传递给报表的@CurrentSystemUser参数:- 如果是用C#通过ReportViewer控件调用,代码示例:
ReportParameter[] reportParams = new ReportParameter[1]; reportParams[0] = new ReportParameter("CurrentSystemUser", 当前登录用户的用户名); reportViewer.LocalReport.SetParameters(reportParams); - 如果是通过URL直接访问报表,在URL末尾拼接参数:
http://你的SSRS服务器地址/ReportServer?/报表路径/报表名称&rs:Command=Render&CurrentSystemUser=当前登录用户名
- 如果是用C#通过ReportViewer控件调用,代码示例:
3. 在报表中添加用户展示控件
在报表的页眉、页脚或需要显示用户的位置添加文本框,设置文本框的表达式为:=Parameters!CurrentSystemUser.Value4. 测试验证
登录业务系统的某个用户,触发报表打印/预览,检查报表上是否正确显示该用户的名称,而非SSRS内置的计算机或系统用户。
注:如果报表是通过SSRS Web门户直接访问,需要结合业务系统的自定义身份验证机制传递用户信息,这种场景下需要额外配置SSRS的身份验证扩展,相对复杂,一般业务系统集成报表优先采用代码传参的方式。
内容的提问来源于stack exchange,提问作者Kharl Laniton
相关产品推荐
相关产品推荐

