Share via


Usar la API SOAP en una aplicación web

Puede tener acceso a la funcionalidad completa del servidor de informes a través de la API SOAP de Reporting Services. Dado que es un servicio web, se puede tener acceso con facilidad a esta API para proporcionar características de informes de empresa para aplicaciones empresariales personalizadas. Para tener acceso al servicio web del servidor de informes desde una aplicación web, se usa casi el mismo proceso que en el acceso a la API SOAP desde una aplicación para Microsoft Windows. Con Microsoft.NET Framework, puede generar una clase de proxy que exponga las propiedades y métodos del servicio web del servidor de informes y le permita utilizar una infraestructura y herramientas conocidas para generar las aplicaciones empresariales en la tecnología Reporting Services.

El acceso a la funcionalidad de administración de informes de Reporting Services se realiza con tanta facilidad desde una aplicación web como desde una aplicación para Windows. Desde una aplicación web, puede agregar y quitar los elementos de la base de datos del servidor de informes, establecer la seguridad de los elementos, modificar los elementos de la base de datos del servidor de informes, administrar la programación y la entrega, etcétera.

Habilitar la suplantación

El primer paso para configurar una aplicación web es habilitar la suplantación desde el cliente de servicios web. Con la suplantación, las aplicaciones de ASP.NET pueden ejecutarse con la identidad del cliente en cuyo el nombre operan. ASP.NET se basa en Microsoft Internet Information Services (IIS) para autenticar al usuario y pasar un token autenticado a la aplicación de ASP.NET o, si no se puede autenticar al usuario, pasar un token sin autenticar. En cualquier caso, la aplicación de ASP.NET suplanta al token que se reciba, si está habilitada la suplantación. Puede habilitar la suplantación en el cliente modificando el archivo Web.config de la aplicación cliente como sigue:

<!-- Web.config file. -->
<identity impersonate="true"/>

[!NOTA]

De manera predeterminada, la suplantación está deshabilitada.

Para obtener más información acerca de la suplantación de ASP.NET, vea la documentación de Microsoft.NET Framework SDK.

Administrar el servidor de informes mediante la API SOAP

También puede utilizar la aplicación web para administrar un servidor de informes y su contenido. El Administrador de informes, que se incluye con Reporting Services, es un ejemplo de aplicación web que se genera completamente utilizando ASP.NET y la API SOAP de Reporting Services. Puede agregar la funcionalidad de administración de informes del Administrador de informes a sus aplicaciones web personalizadas. Por ejemplo, podría desear devolver una lista de los informes disponibles en la base de datos del servidor de informes y mostrarlos en un control Listbox de ASP.NET para que los usuarios puedan elegir. El código siguiente se conecta a la base de datos del servidor de informes y devuelve una lista de los elementos de la base de datos del servidor de informes. A continuación, los informes disponibles se agregan a un control Listbox, que muestra la ruta de acceso de cada informe.

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