java ssrs匿名_玩转SSRS第九篇—匿名访问的一个间接方法 | 学步园

本文介绍了一种在SSRS平台上实现匿名访问报表的方法。通过在SSRS与客户端应用间搭建一个ASP.NET程序,该程序模拟有权限用户的访问,进而允许JSP或PHP等应用间接调用SSRS报表。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SSRS是一个功能丰富的报表平台,我们可以在这个平台上实现各种不同需求的报表应用,所以这个平台也吸引了很多.net框架之外的技术,希望能在应用中引入SSRS的报表,比如JSP或者PHP页面,这个时候系统往往会有这种需求,就是通过程序能够直接访问到SSRS的报表,而不让其弹出身份验证框。

16a850a1a88960ac24f830886f15ad59.png

从SSRS2008之后,匿名访问的配置就没有那么直接,可能会很麻烦,关于这点园子里已经有兄弟Dege301对其描述过:

我这里将用另外一个间接的方法对SSRS实现匿名验证。具体的思路就是在应用(JSP or PHP等)和SSRS之间加一个ASP.NET程序,利用ReportViewer显示报表,发布到IIS的时候让其模拟为在SSRS下有访问权限的用户。

56d99fbc5e731a229a4371f409a37ca6.png

为了演示方便,首先建立一个SSRS项目,然后放置几张简单的报表。

96323d77856523e688857a8f7d4bec75.png

之后将其发布,后面将用匿名的方法间接的对这些报表进行访问。

dd083b7e347945ede5bb2d4b4c4573b6.png

报表的内容用Report1,2,3进行了标识。

aa9b39172d06d006c09d6305c17d9b3c.png

打开Visual Studio,新建一个ASP.NET Web Application项目,加入两个页面Report.aspx,ReportList.aspx,前者是用ReportViewer来显示报表的,它接收ReportList.aspx传递过来的报表路径信息。

4ed6938a7ec687e768d3602828aef63c.png

此外加入了一个SSRS中的系统表在Linq to SQL中。从这个表里可以读到SSRS实例下都已经发布了哪些报表。

从这一步开始到创建ReportList.aspx的所有步骤,都是为了让页面能读取到已经发布到SSRS报表的信息,对于不熟悉ASP.NET的朋友来说可以直接跳过,这个页面就相当于在一个JSP页面中向SSRS发送报表请求的一个页面。

c0f624383ff371ec031f057f6ee717d6.png

在ReportList.aspx里,加入一个ListView控件以及LinqDataSource控件,我们在这个页面上通过Linq to SQL把SSRS实例中的报表信息都读出来,并且创建超级链接跳转到Report.aspx显示报表的详细内容。

b0d3f96ac10fffab572d06aecf94c182.png

首先配置LinqDataSource,按照我的截图一步一步配置就可以,这个数据源将读取出所有已经发布到SSRS中的报表。首先配置页面中的LinqDataSource。

86666a1054604cacc5f20f078c045208.png

然后选择需要的字段,这里我们只需要Path字段。点击旁边的Where…按钮。

39de5fda312f96e906ef8cd8c8ab371f.png

在Where表达式界面中添加Type==2的条件,Type为2的被标识为一个报表信息,1为一个目录信息。

2e19d0237514c2676be006941eca92f4.png

编辑ListView里的模版列信息,放入HyperLink控件。

5b80c17dd6e553fd4e0114f706580385.png

点击Edit Binding,配置Text绑定属性。

b71f60bb56a5ffb1e8c137b150c94544.png

然后再配置navigateUrl绑定属性。

fff73c923c607d2fe4078e018315ad0e.png

ReportList.aspx配置完毕,对于不熟悉ASP.NET的朋友来说可以忽略上一个页面的创建,因为这个页面主要是用来模拟一个普通的页面比如JSP或者PHP跳转到Report.aspx页面的。

接下来再来创建Report.aspx页面,放入ScriptManager和ReportViewer控件。这两个控件在工具面板中都很容易找到。

bf8d3b8d0831c333191a8e1aa821ec26.png

Report.aspx所对应的后台代码。

ea32796f20b35d3e208d85ab7db6e1a7.png

代码从url参数中读取到Path参数,然后再赋给ReportViewer控件中。

接下来运行下应用,从ReportList.aspx页面开始。

15c50df9e1b3c909546e2a12d634f3cb.png

列表读取到了所有已经发布到SSRS实例的报表。点击任意一个链接,就可以查看到报表的内容,留意到这个时候是没有SSRS弹出的验证界面的。

f9ae73ac986127a214df1c955298364d.png

最后,将这个项目发布到IIS中作为其它应用访问SSRS报表的一个中间层。新建IIS站点。

7c53a7db00d51f9393f3fbfcc9e18b42.png

点击身份验证。

c6d427820091474239676b3b061112ec.png

开启ASP.NET模拟。

3bb17bca197ce8874aedbd06ec2fd3cd.png

配置模拟信息,这里只要使用一个对报表有访问权限的用户即可。

4caf45b88f50b4cbce708e4ebb4be4ca.png

最后,浏览项目。

56988054a1bd0e0358a73ceaed3bc329.png

可以看到跟本地调试的效果是一样的。这样就可以把这个发布的项目作为中间层来作为其它网页应用访问SSRS报表的一个中间层,来间接的实现匿名访问。

0ec975851147a9813434265880e950c4.png

如果你觉得ReportViewer控件的工具栏很别扭,可以选择不让它显示出来,在ReportViewer控件中,找到 ShowToolBar属性设置为False即可。

891c616bffbcf7e0cdc77c6960bf58e2.png

这样就可以看到一个干净的SSRS报表了。

87c2b2bbe65a0491287fb546555ecdaf.png

以上通过间接的方法实现SSRS报表的方法大致介绍完毕,方法的主要思路就是在应用和SSRS之间加入了一个ASP.NET站点,让这个站点具有报表的访问权限从而间接的实现了匿名访问。

这里面涉及到了一些关于ASP.NET和IIS配置的信息,有不熟悉关于他们的配置的朋友或者遇到错误无法发布的朋友欢迎在下面留言,我将尽量根据大家所提供的错误提示来帮大家解决问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值