使用SOAP整合 Reporting Services - Web 應用程式
您可以透過 Reporting Services SOAP API 存取報表伺服器的完整功能。 因為它是一種 Web 服務,所以可以輕易地存取 SOAP API,以提供企業報表功能給自訂商務應用程式。 您可以從 Web 應用程式存取報表伺服器 Web 服務,這與從 Microsoft Windows 應用程式存取 SOAP API 非常類似。 藉由使用 Microsoft .NET Framework,您可以產生 Proxy 類別,公開報表伺服器 Web 服務的屬性和方法。 然後,您可以使用熟悉的基礎結構和工具,在 Reporting Services 技術上建置商務應用程式。
Reporting Services 報表管理功能可從 Web 應用程式或 Windows 應用程式輕鬆存取。 從 Web 應用程式,您可以從報表伺服器資料庫新增和移除項目、設定項目安全性、修改報表伺服器資料庫項目、管理排程和傳遞等等。
啟用模擬
設定 Web 應用程式的第一個步驟是從 Web 服務用戶端啟用模擬。 使用模擬,ASP.NET 應用程式可以代表其運作的用戶端身分識別來執行。 ASP.NET 依賴 Microsoft Internet Information Services (IIS) 來驗證使用者,並將已驗證的權杖傳遞給 ASP.NET 應用程式,或者在無法驗證使用者的情況下,傳遞未驗證的權杖。 不論是哪一種情況,ASP.NET 應用程式都會在已啟用模擬的情況下模擬所收到的權杖。 您可以透過修改用戶端應用程式的 Web.config 檔案,啟用在用戶端上的模擬:
<!-- Web.config file. -->
<identity impersonate="true"/>
注意
預設會啟用模擬。
如需 ASP.NET 模擬的詳細資訊,請參閱 Microsoft .NET Framework SDK 文件。
使用SOAP API管理報表伺服器
您也可以使用 Web 應用程式來管理報表伺服器及其內容。 Reporting Services 隨附的報表管理員是使用 ASP.NET 和 Reporting Services SOAP API 所建置的 Web 應用程式範例。 您可以將報表管理員的報表管理功能加入自訂 Web 應用程式。 例如,建議您傳回報表伺服器資料庫中可用報表的清單,並將其顯示在 ASP.NET Listbox 控制項中,以供您的使用者選擇。 下列程式碼會連接報表伺服器資料庫,並在報表伺服器資料庫中傳回項目的清單。 接著會將可用的報表加入 Listbox 控制項,如此會顯示每個報表的路徑。
您也可以使用 Web 應用程式來管理報表伺服器及其內容。 Reporting Services 隨附的入口網站是 Web 應用程式的範例,可管理您通常會使用 Reporting Services 執行的大部分工作。 您可以將入口網站的報表管理功能新增到自訂 Web 應用程式。 例如,建議您傳回報表伺服器資料庫中可用報表的清單,並將其顯示在 ASP.NET Listbox 控制項中,以供您的使用者選擇。 下列程式碼會連接報表伺服器資料庫,並在報表伺服器資料庫中傳回項目的清單。 接著會將可用的報表加入 Listbox 控制項,如此會顯示每個報表的路徑。
Private Sub Page_Load(sender As Object, e As System.EventArgs)
' Create a Web service proxy object and set credentials
Dim rs As New ReportingService2005()
rs.Credentials = System.Net.CredentialCache.DefaultCredentials
' Return a list of catalog items in the report server database
Dim items As CatalogItem() = rs.ListChildren("/", True)
' For each report, display the path of the report in a Listbox
Dim ci As CatalogItem
For Each ci In items
If ci.Type = ItemTypeEnum.Report Then
catalogListBox.Items.Add(ci.Path)
End If
Next ci
End Sub ' Page_Load
private void Page_Load(object sender, System.EventArgs e)
{
// Create a Web service proxy object and set credentials
ReportingService2005 rs = new ReportingService2005();
rs.Credentials = System.Net.CredentialCache.DefaultCredentials;
// Return a list of catalog items in the report server database
CatalogItem[] items = rs.ListChildren("/", true);
// For each report, display the path of the report in a Listbox
foreach(CatalogItem ci in items)
{
if (ci.Type == ItemTypeEnum.Report)
catalogListBox.Items.Add(ci.Path);
}
}