ReportServer加入自定義模組(Custom HttpModule)

此篇文章適用於SSRS系列

因為筆者使用的是ReportServer2014版本

故本篇範例都會以2014來介紹

【環境準備】

1. SSRS(ReportServer)

2. Visual Studio 任意版本

3. .Net Framework 3.5 


【編譯模組】

1. 建立一個新專案為.Net Framework類別庫,並選擇Target為.Net Framework 3.5

2. 加入參考"System.Web"

3. 實作基本類別並繼承IHttpModule (如下圖參考)


(模組邏輯請自行設計)

4. 編譯程式並準備好編譯好的DLL檔案


【加入模組】

1. 開啟SSRS資料夾目錄,參考目錄如下

C:\Program Files\Microsoft SQL Server\MSRS12.MSSQLSERVER\Reporting Services\ReportServer

2. 進入bin資料夾,將剛剛的DLL檔案放進此目錄中


【更改設定檔】

1. 到ReportServer目錄下,開啟rssrvpolicy.config檔案,加入下面的代碼到"$CodeGen$/*"關鍵字的下方

(如果你不知道關鍵字在哪裡,請善用搜尋功能)

<CodeGroup   
    class="UnionCodeGroup"  
    version="1"  
    PermissionSetName="FullTrust"  
    Name="MyHttpModule"  
    Description="Code group for my custom extension">  
    <IMembershipCondition class="UrlMembershipCondition"  
        version="1"  
        Url="C:\Program Files\Microsoft SQL Server\MSRS12.MSSQLSERVER\Reporting Services\ReportServer\bin\MyHttpModule.dll"  
    />  
</CodeGroup> 

(加入後看起來會像這樣)

2. 更改剛剛貼上的代碼中Url路徑,改為你剛剛放的DLL檔案位置

3. 更改剛剛貼上的代碼中Name屬性(盡量與DLL檔統一名稱)


【更改設定檔 - 2】

1. 開啟另一個檔案web.config,找到httpModules節點後加入以下內容

<add name="FirstHttpModule" type="MyHttpModule.FirstHttpModule, MyHttpModule" />
(加入後看起來會像這樣)

PS: 這邊要注意的是加入規則,範例如下

name:"MyClassName", type:"MyNameSpace.MyClassName, MyNameSpace"


【完成作業】

完成之後重新啟動SSRS,如果你有在模組中做邏輯,就會看到不一樣的內容。


【QA】

Q1: 為什麼不用.Net Framework 4.0以上的版本呢?

A1: 目前SSRS不支援.Net Framework 4.0以上版本,故只能使用3.5, 3.0, 2.0版本開發


留言