Exportar (0) Imprimir
Expandir todo

Desarrollar con SQL Reporting (Azure SQL Reporting)

Actualizado: mayo de 2014

ImportantImportante

En este artículo se proporciona información para los desarrolladores de aplicaciones que integran los informes que hospeda en sus aplicaciones, así como herramientas de administración de desarrollo con servidores de informes de .

De forma similar a los informes implementados en servidores de informes (SSRS) locales, los informes implementados en servidores de informes se pueden mostrar en aplicaciones Windows Forms o ASP.NET usando el control ReportViewer de Visual Studio. Del mismo modo, expone extremos SOAP que habilitan la administración mediante programación del servidor de informes.

Revise los temas siguientes sobre requisitos, instrucciones, compatibilidad y características no admitidas:

Volver al principio

usa autenticación basada en cookies. Cada cookie expira después de una hora. El servidor de informes envía una nueva cookie al cliente cada media hora. Cuando las aplicaciones tienen acceso a un servidor de informes de , el código cliente debe guardar de forma explícita las cookies nuevas enviadas por el servidor y devolverlas con las solicitudes siguientes.

Puesto que implementa una extensión de autenticación personalizada para proporcionar una interfaz de autenticación de formularios, debe tenerla en cuenta al programar con el servidor de informes. Esta extensión personalizada funciona del modo descrito en la introducción a las extensiones de seguridad ((SQL Server 2008 R2 Reporting Services). En resumen, debe hacer lo siguiente:

  1. Proporcionar las credenciales de de un modo que la extensión de autenticación de formularios admita.

  2. Guardar la cookie de autenticación del intento de autenticación con el servidor de informes.

Los informes de muestra desarrollados en que usan bases de datos de se incluyen en Ejemplos de SQL Reporting.

Volver al principio

Los controles ReportViewer administran la cookie de autenticación, con lo que se facilitan las tareas. Para mostrar informes implementados en un servidor de informes de en los controles ReportViewer, suministre la dirección URL del servidor de informes y la ruta de acceso del informe como haría para cualquier servidor de informes e implemente la interfaz IReportServerCredentials y úsela en ServerReport.ReportServerCredentials.

En el ejemplo siguiente se muestra cómo implementar y usar IReportServerCredentials para tener acceso a informes de :


/// <summary>
/// Implementation of IReportServerCredentials to supply forms credentials to SQL Reporting using GetFormsCredentials() 
/// </summary>
public class ReportServerCredentials : IReportServerCredentials
{
    public ReportServerCredentials()
    {
    }

    public WindowsIdentity ImpersonationUser
    {
        get
        {
            return null;
        }
    }

    public ICredentials NetworkCredentials
    {
        get
        {
            return null;
        }
    }

    public bool GetFormsCredentials(out Cookie authCookie, out string user, out string password, out string authority)
    {
        authCookie = null;
        user = ConfigurationManager.AppSettings["USERNAME"];
        password = ConfigurationManager.AppSettings["PASSWORD"];
        authority = ConfigurationManager.AppSettings["SERVER_NAME"];
        return true;
    }
}

Después, en el archivo Web.config o App.config, especifique la configuración de la aplicación en la sección <appSettings>. En el ejemplo siguiente, considere la posibilidad de reemplazar los valores de SERVER_NAME, USERNAME, PASSWORD y REPORT_PATH con valores adecuados de su servidor de informes de .

<appSettings>
  <add key="SERVER_NAME" value="<INSTANCE_NAME>.report.int.mscds.com" />
  <add key="USERNAME" value="<USERNAME>"/>
  <add key="PASSWORD" value="<PASSWORD>"/>
  <add key="REPORT_PATH" value="<REPORT_PATH>"/>
</appSettings>

En el ejemplo siguiente se muestra cómo usar IReportServerCredentials para tener acceso a informes de :

public partial class Default : System.Web.UI.Page
{
    Microsoft.Reporting.WebForms.ReportViewer ReportViewer1 = new ReportViewer();
    protected void Page_Init(object sender, EventArgs e)
    {
         ReportViewer1.ServerReport.ReportServerUrl = new Uri(String.Format("https://{0}/reportserver", ConfigurationManager.AppSettings["SERVER_NAME"]));
         ReportViewer1.ServerReport.ReportPath = ConfigurationManager.AppSettings["REPORT_PATH"];
         ReportViewer1.ServerReport.ReportServerCredentials = new ReportServerCredentials();
    }
}

Para obtener más información sobre la interfaz IReportServerCredentials, vea el tema de referencia de la API correspondiente en Referencia de programación de controles ReportViewer en MSDN. Para las aplicaciones de Windows Forms, use el Espacio de nombres Microsoft.Reporting.Winforms. Para las aplicaciones de ASP.NET, use el Espacio de nombres Microsoft.Reporting.Webforms.

Vea Consideraciones de seguridad para obtener información sobre cómo proteger datos confidenciales como la dirección URL del servidor de informes, el nombre de usuario y la contraseña.

Volver al principio

La API SOAP de proporciona varios extremos de servicios Web para el desarrollo de soluciones de informes personalizadas. La funcionalidad de administración se expone mediante los extremos ReportService2005 (Espacio de nombres) y ReportService2010 (Espacio de nombres). Para obtener la lista de API SOAP no admitidas en SQL Reporting, vea Instrucciones y limitaciones de Azure SQL Reporting.

Al tener acceso al extremo de administración SOAP, use el método LogonUser() del extremo para autenticarse con el extremo. Después, tiene que guardar la cookie de autenticación que devuelve la respuesta HTTP e incluirla en cada solicitud de operación posterior. La forma más fácil de hacer esto es crear una instancia nueva de CookieContainer y asignarla a la propiedad CookieContainer de la clase de proxy antes de llamar a LogonUser().

  1. En el explorador, vaya a la ruta de acceso del extremo. Por ejemplo: https://<INSTANCE_NAME>.report.int.mscds.com/ReportServer/reportservice2010.asmx

  2. Escriba su nombre de usuario y contraseña y haga clic en Iniciar sesión. En el explorador se mostrará un archivo WSDL.

  3. Descargue el archivo WSDL.

  4. Abra el símbolo del sistema de Visual Studio y ejecute el comando wsdl.exe para generar la clase de proxy. Por ejemplo: wsdl /language:CS /n:"ReportServices2010" <WSDL_FILE_PATH>

  5. En Visual Studio, agregue a su proyecto el archivo .cs generado.

  1. El código siguiente muestra cómo autenticarse y autorizarse con el extremo de administración de ReportingServices2010 y realizar la operación ReportingService2010.ListChildren(). Observe que la propiedad CookieContainer se establece en una instancia nueva de la clase CookieContainer antes de que se ejecute el método LogonUser(). Esto garantiza que la cookie de autenticación que devuelve la respuesta web de LogonUser() se guarda y se usa en posteriores llamadas a servicios web.

    ReportingService2010 rs = new ReportingService2010();
    rs.Url = String.Format("https://{0}:443/ReportServer/ReportService2010.asmx", ConfigurationManager.AppSettings["SERVER_NAME"]);
    rs.CookieContainer = new CookieContainer();
    rs.LogonUser(ConfigurationManager.AppSettings["USERNAME"], ConfigurationManager.AppSettings["PASSWORD"], ConfigurationManager.AppSettings["SERVER_NAME"]);
    
    CatalogItem[] items = rs.ListChildren("/", true);
    
  2. Después, en el archivo Web.config o App.config, especifique la configuración de la aplicación en la sección <appSettings>. En el ejemplo siguiente, considere la posibilidad de reemplazar los valores de SERVER_NAME, USERNAME y PASSWORD con valores adecuados de su servidor de informes de .

    <appSettings>
      <add key="SERVER_NAME" value="<INSTANCE_NAME>.report.int.mscds.com" />
      <add key="USERNAME" value="<USERNAME>"/>
      <add key="PASSWORD" value="<PASSWORD>"/>
    </appSettings>
    

Vea Consideraciones de seguridad para obtener información sobre cómo proteger datos confidenciales como la dirección URL del servidor de informes, el nombre de usuario y la contraseña.

Volver al principio

Las cadenas como la dirección URL del servidor de informes, el nombre de usuario y la contraseña son información protegida y deben almacenarse en la sección <appSettings> en el archivo Web.config o App.config de su aplicación. Se recomienda cifrar estos datos en su archivo de configuración. Los siguientes vínculos son series de cuatro partes que muestran cómo cifrar los datos en la sección <connectionStrings>. Los mismos pasos se aplican a la sección <appSettings>.

Volver al principio

Después de desarrollar sus aplicaciones, puede elegir la guía que desee entre las siguientes como paso siguiente:

Volver al principio

Vea también

Mostrar:
© 2014 Microsoft