天天看點

玩轉SSRS第九篇---匿名通路的一個間接方法

SSRS是一個功能豐富的報表平台,我們可以在這個平台上實作各種不同需求的報表應用,是以這個平台也吸引了很多.net架構之外的技術,希望能在應用中引入SSRS的報表,比如JSP或者PHP頁面,這個時候系統往往會有這種需求,就是通過程式能夠直接通路到SSRS的報表,而不讓其彈出身份驗證框。

玩轉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第九篇---匿名通路的一個間接方法

為了示範友善,首先建立一個SSRS項目,然後放置幾張簡單的報表。

玩轉SSRS第九篇---匿名通路的一個間接方法

之後将其釋出,後面将用匿名的方法間接的對這些報表進行通路。

玩轉SSRS第九篇---匿名通路的一個間接方法

報表的内容用Report1,2,3進行了辨別。

玩轉SSRS第九篇---匿名通路的一個間接方法

打開Visual Studio,建立一個ASP.NET Web Application項目,加入兩個頁面Report.aspx,ReportList.aspx,前者是用ReportViewer來顯示報表的,它接收ReportList.aspx傳遞過來的報表路徑資訊。

玩轉SSRS第九篇---匿名通路的一個間接方法

此外加入了一個SSRS中的系統表在Linq to SQL中。從這個表裡可以讀到SSRS執行個體下都已經釋出了哪些報表。

從這一步開始到建立ReportList.aspx的所有步驟,都是為了讓頁面能讀取到已經釋出到SSRS報表的資訊,對于不熟悉ASP.NET的朋友來說可以直接跳過,這個頁面就相當于在一個JSP頁面中向SSRS發送報表請求的一個頁面。

玩轉SSRS第九篇---匿名通路的一個間接方法

在ReportList.aspx裡,加入一個ListView控件以及LinqDataSource控件,我們在這個頁面上通過Linq to SQL把SSRS執行個體中的報表資訊都讀出來,并且建立超級連結跳轉到Report.aspx顯示報表的詳細内容。

玩轉SSRS第九篇---匿名通路的一個間接方法

首先配置LinqDataSource,按照我的截圖一步一步配置就可以,這個資料源将讀取出所有已經釋出到SSRS中的報表。首先配置頁面中的LinqDataSource。

玩轉SSRS第九篇---匿名通路的一個間接方法

然後選擇需要的字段,這裡我們隻需要Path字段。點選旁邊的Where…按鈕。

玩轉SSRS第九篇---匿名通路的一個間接方法

在Where表達式界面中添加Type==2的條件,Type為2的被辨別為一個報表資訊,1為一個目錄資訊。

玩轉SSRS第九篇---匿名通路的一個間接方法

編輯ListView裡的模版列資訊,放入HyperLink控件。

玩轉SSRS第九篇---匿名通路的一個間接方法

點選Edit Binding,配置Text綁定屬性。

玩轉SSRS第九篇---匿名通路的一個間接方法

然後再配置navigateUrl綁定屬性。

玩轉SSRS第九篇---匿名通路的一個間接方法

ReportList.aspx配置完畢,對于不熟悉ASP.NET的朋友來說可以忽略上一個頁面的建立,因為這個頁面主要是用來模拟一個普通的頁面比如JSP或者PHP跳轉到Report.aspx頁面的。

接下來再來建立Report.aspx頁面,放入ScriptManager和ReportViewer控件。這兩個控件在工具面闆中都很容易找到。

玩轉SSRS第九篇---匿名通路的一個間接方法

Report.aspx所對應的背景代碼。

玩轉SSRS第九篇---匿名通路的一個間接方法

代碼從url參數中讀取到Path參數,然後再賦給ReportViewer控件中。

接下來運作下應用,從ReportList.aspx頁面開始。

玩轉SSRS第九篇---匿名通路的一個間接方法

清單讀取到了所有已經釋出到SSRS執行個體的報表。點選任意一個連結,就可以檢視到報表的内容,留意到這個時候是沒有SSRS彈出的驗證界面的。

玩轉SSRS第九篇---匿名通路的一個間接方法

最後,将這個項目釋出到IIS中作為其它應用通路SSRS報表的一個中間層。建立IIS站點。

玩轉SSRS第九篇---匿名通路的一個間接方法

點選身份驗證。

玩轉SSRS第九篇---匿名通路的一個間接方法

開啟ASP.NET模拟。

玩轉SSRS第九篇---匿名通路的一個間接方法

配置模拟資訊,這裡隻要使用一個對報表有通路權限的使用者即可。

玩轉SSRS第九篇---匿名通路的一個間接方法

最後,浏覽項目。

玩轉SSRS第九篇---匿名通路的一個間接方法

可以看到跟本地調試的效果是一樣的。這樣就可以把這個釋出的項目作為中間層來作為其它網頁應用通路SSRS報表的一個中間層,來間接的實作匿名通路。

玩轉SSRS第九篇---匿名通路的一個間接方法

如果你覺得ReportViewer控件的工具欄很别扭,可以選擇不讓它顯示出來,在ReportViewer控件中,找到 ShowToolBar屬性設定為False即可。

玩轉SSRS第九篇---匿名通路的一個間接方法

這樣就可以看到一個幹淨的SSRS報表了。

玩轉SSRS第九篇---匿名通路的一個間接方法

以上通過間接的方法實作SSRS報表的方法大緻介紹完畢,方法的主要思路就是在應用和SSRS之間加入了一個ASP.NET站點,讓這個站點具有報表的通路權限進而間接的實作了匿名通路。

這裡面涉及到了一些關于ASP.NET和IIS配置的資訊,有不熟悉關于他們的配置的朋友或者遇到錯誤無法釋出的朋友歡迎在下面留言,我将盡量根據大家所提供的錯誤提示來幫大家解決問題。

---------------------------------------------------------------

aspnetx的BI筆記系列索引:

使用SQL Server Analysis Services資料挖掘的關聯規則實作商品推薦功能

一起玩轉SQL Server 2012 下的分析服務

使用SQL Server分析服務定位目标使用者

來自部落格園的aspnetx宋衛東