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. 微型Http服务器Tiny Http Server

    Tiny Http Server 一个简单的跨平台Http服务器.服务器部分使用了Mongoose的代码,界面是使用QT开发的. 开发为了在临时需要使用一个http服务器来做发布代码文档的时候,不用去 ...

  2. JSON代码格式化 进行查询筛选

    JSON是前端编程经常用到的格式,对于PHP或者Python,解析JSON都不是什么大事,尤其是PHP的json_encode和json_decode,干的相当的漂亮.Linux下也有处理处理JSON ...

  3. poj 1125 (floyd)

    http://poj.org/problem?id=1125. 题意:在经纪人的圈子里,他们各自都有自己的消息来源,并且也只相信自己的消息来源,他们之间的信息传输也需要一定的时间.现在有一个消息需要传 ...

  4. POJ 3009

    http://poj.org/problem?id=3009 一个搜索的题目: 大意就是一个冰球,在冰面上滑动,你打击一次,就沿一个反向滑动,知道碰到墙就会停下,而墙则会破碎. 求从起点到终点的最短的 ...

  5. Appium+Robotframework实现Android应用的自动化测试-5:RIDE中AppiumLibrary的配置

    可能很多朋友已经迫不及待的想要用RobotFramework+AppiumLibrary来写Android App的测试脚本了,那我们也废话少说,直接开始. 首先打开RIDE,这是编写RobotFra ...

  6. ACM/ICPC 之 平面几何-两直线关系(POJ 1269)

    题意:给定四点的坐标(x,y),分别确定两直线,求出其交点,若重合or平行则输出相应信息 用四个点的坐标算出直线通式(ax+by+c=0)中的a,b,c,然后利用a,b,c计算出交点坐标(其他公式不够 ...

  7. FFmpeg-20160415-snapshot-bin

    ESC 退出 0 进度条开关 1 屏幕原始大小 2 屏幕1/2大小 3 屏幕1/3大小 4 屏幕1/4大小 S 下一帧 [ -2秒 ] +2秒 ; -1秒 ' +1秒 下一个帧 -> -5秒 F ...

  8. CentOS基础指令备忘

    功能 指令 可用参数 示例 说明 新建文件夹 mkdir   mkdir etc/temp 在当前目录的etc文件夹下新建temp文件夹 新建文件 vi   vi abc.sh 新建名为abc.sh的 ...

  9. Match:Censored!(AC自动机+DP+高精度)(POJ 1625)

     Censored! 题目大意:给定一些字符,将这些字符组成一个固定长度的字符串,但是字符串不能包含一些禁词,问你有多少种组合方式. 这是一道好题,既然出现了“一些”禁词,那么这题肯定和AC自动机有点 ...

  10. 加载ComboBox控件

    /// <summary> /// 加载公司 /// </summary> /// <param name="cbbCompany">Combo ...