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. 正在使用广告标识符 (IDFA)

    APP提交审核后,apple方面一直说我使用了IDFA,APP里没有集合任何广告SDK. 怀疑是其他第三方的SDK用了. 检测命令 //在项目的根目录下用终端执行 grep -r advertisin ...

  2. Objective C 快速入门学习四

    类 1.合成存取器方法 @property   成员变量 @synthesize 成员变量 可以让编译器自动合成 设置和获取函数的方法,不用手动生成set成员变量,Get成员变量 @interface ...

  3. 应用HTK搭建语音拨号系统3:创建绑定状态的三音素HMM模型

    选自:http://maotong.blog.hexun.com/6261873_d.html 苏统华 哈尔滨工业大学人工智能研究室 2006年10月30日 声明:版权所有,转载请注明作者和来源 该系 ...

  4. phalcon 前端代码结构

    phalcon 前端举例: (1)  baisic.phtml + basic_ajax_get.phtml + basic_ajax_post.phtml (2)  basic_get.phtml ...

  5. Bootstrap datepicker可配置网址

    http://eternicode.github.io/bootstrap-datepicker/?markup=input&format=&weekStart=&startD ...

  6. 如何限制一个类只在堆上分配和栈上分配(StackOnly HeapOnly)

    [本文链接] http://www.cnblogs.com/hellogiser/p/stackonly-heaponly.html [题目] 如何限制一个类只在堆上分配和栈上分配? [代码]  C+ ...

  7. 转:C++编程隐蔽错误:error C2533: 构造函数不能有返回类型

    C++编程隐蔽错误:error C2533: 构造函数不能有返回类型 今天在编写类的时候,出现的错误. 提示一个类的构造函数不能够有返回类型.在cpp文件里,该构造函数定义处并没有返回类型.在头文件里 ...

  8. Nginx反向代理到Tomcat服务器

    在实际生产中,Tomcat服务器一般不单独使用在项目中,对于静态资源的响应Nginx表现的比较好,另外由于nginx是专门用于反向代理的服务器,所以很容易实现将java的请求转发到后端交给tomcat ...

  9. java wait()和notify()、notifyAll()

    图见<JAVA并发编程的艺术>P98-101 这三个方法都是java.lang.Object的方法,用于协调多个线程对共享数据的存取,必须在synchronized语句块中使用!这三个方法 ...

  10. ABAP 单位转换函数

    CALL FUNCTION 'UNIT_CONVERSION_SIMPLE'         EXPORTING           input                = wa_all-btg ...