共用方式為


在 Web 應用程式中使用 SOAP API

您可以透過 Reporting Services SOAP API 存取報表伺服器的完整功能。 因為它是一種 Web 服務,所以可以輕易地存取 SOAP API,以提供企業報表功能給自訂商務應用程式。 您可以從 Web 應用程式存取報表伺服器 Web 服務,這與從 Microsoft Windows 應用程式存取 SOAP API 非常類似。 透過使用 Microsoft .NET Framework,您就可以產生公開報表伺服器 Web 服務的屬性與方法之 Proxy 類別,而且可讓您使用熟悉的基礎結構與工具,建置以 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 控制項,如此會顯示每個報表的路徑。

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);  
   }  
}  

另請參閱

使用 Web 服務和 .NET Framework 建置應用程式
將 Reporting Services 整合到應用程式
報表管理員 (SSRS 原生模式)
在 Windows 應用程式中使用 SOAP API