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

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

http://www.cnblogs.com/dege301/archive/2010/04/09/1708103.html

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

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

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

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

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

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

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

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

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

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

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

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

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

然后再配置navigateUrl绑定属性。

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

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

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

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

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

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

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

点击身份验证。

开启ASP.NET模拟。

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

最后,浏览项目。

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

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

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

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

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

玩转SSRS第九篇---匿名访问的一个间接方法的更多相关文章

  1. 15天玩转redis —— 第九篇 发布/订阅模式

    本系列已经过半了,这一篇我们来看看redis好玩的发布订阅模式,其实在很多的MQ产品中都存在这样的一个模式,我们常听到的一个例子 就是邮件订阅的场景,什么意思呢,也就是说100个人订阅了你的博客,如果 ...

  2. SQL Server Reporting Service(SSRS) 第一篇 我的第一个SSRS例子

    很早就知道SQL SERVER自带的报表工具SSRS,但一直没有用过,最近终于需要在工作中一展身手了,于是我特地按照自己的理解做了以下总结: 1. 安装软件结构 SSRS全称SQL Server Re ...

  3. ThinkPHP之中利用commom被继承控制器控制访问每一个控制器方法都需要验证是否已经登录!

    防止 <?php namespace Home\Controller; use Think\Controller; class CommonController extends Controll ...

  4. SSRS 报表 如何匿名查看

    SSRS 报表 如何匿名查看 昨晚一直研究怎么能匿名访问报表然后给客户看呢? 研究了好几种办法 我试过的分为三种,其中推荐我认为相对可控一点. .修改SSRS配置文件来禁止他验证登陆用户权限 操作过的 ...

  5. SQL Server Reporting Service(SSRS) 第二篇 SSRS数据分组Parent Group

    SQL Server Reporting Service(SSRS) 第一篇 我的第一个SSRS例子默认使用Table进行简单的数据显示,有时为了进行更加直观的数据显示,我们需要按照某个字段对列表进行 ...

  6. 微软BI 之SSRS 系列 - 报表邮件订阅中 SMTP 服务器匿名访问与 Windows验证, 以及如何成功订阅报表的实例

    这篇文章源于在上一篇博文中有园友提出订阅 SSRS 报表时的一个问题,  于是就好好总结了一下,把有关 SSRS 报表订阅的要点和容易出现问题的地方写出来,希望对大家有所帮助! 参看上一篇博文 - S ...

  7. SSRS匿名访问

    ---本人数据库是SqlServer2008 R2 匿名访问Reporting Service 2008 我想通过访问Url的方式,把部署到Sql Server  Reporting Service ...

  8. 匿名访问ReportService报表服务器(一)

    我的数据库版本是sql server 2008 r2,系统环境是windows server2008. 对于sql server 2008 r2上报rs报表的匿名访问问题,我这边尝试过两个可行方案: ...

  9. 解剖SQLSERVER 第九篇 OrcaMDF现在能通过系统DMVs显示元数据(译)

    解剖SQLSERVER 第九篇  OrcaMDF现在能通过系统DMVs显示元数据(译) http://improve.dk/orcamdf-now-exposes-metadata-through-s ...

随机推荐

  1. SNMP简单网络管理协议(转载)

    SNMP SNMP 网络管理的历史 美国国防部设计了世界上头几个包交换网之一的ARPANET,在70年代,TCP/IP协议族正式被定为军方通信标准,随着此协议的广泛使用,网络管理成了一件大事.在80年 ...

  2. 转:bwa的使用方法

    bwa的使用需要两中输入文件:    Reference genome data(fasta格式 .fa, .fasta, .fna)    Short reads data (fastaq格式 .f ...

  3. js判断移动端是否安装某款app的多种方法

    本文实例讲解了js判断移动端是否安装某款app的多种方法,分享给大家供大家参考,具体内容如下 第一种方法: 一:判断是那种设备 ? || u.indexOf(; //android终端或者uc浏览器 ...

  4. hadoop初识

    搞什么东西之前,第一步是要知道What(是什么),然后是Why(为什么),最后才是How(怎么做).但很多开发的朋友在做了多年项目以后,都习惯是先How,然后What,最后才是Why,这样只会让自己变 ...

  5. 错误描述:请求“System.Data.SqlClient.SqlClientPermission, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”类型的权限已失败

    错误描述:请求“System.Data.SqlClient.SqlClientPermission, System.Data, Version=2.0.0.0, Culture=neutral, Pu ...

  6. 多线程同步_Monitor

    多线程一直在学习和理解中...... Monitor类是多线程中用以实现同步的一种技术,主要是同一进程内多线程间的同步技术. Monitor类中有以下几个方法需要注意: Monitor.Enter(o ...

  7. PHP-FPM的常用操作

    PHP-FPM安装完毕之后,没有自带的结束命令,可以通过以下方法结束: 1.首先查看PHP-FPM进程号: ps -ef | grep php-fpm 可以看到master进程号为91790,有两个子 ...

  8. java Thread和Runnable区别

    ①Thread类实现了Runnable接口,主要构造方法为Thread(Runnable target).Thread(Runnable target,String name).Thread(Stri ...

  9. json格式

    $.post('text.action',{....},function(datas){ var name=datas.data[0].name; }); 如果是多个还可以用循环获取.$.post(' ...

  10. WdatePicker组件不显示

    突然发现时间组件不显示了,以为是浏览器的问题.在本地服务器测试了一下发现一切正常. 怀疑是前段时间中毒引起的,用工具比对了一下WdatePicker的文件包,发现My97DatePicker.htm这 ...