Guarde el informe de SSRS como pdf usando Reporting Services

He intentado convertir un Informe SSRS a PDF y guardarlo en mi disco local utilizando los Servicios web de informes. Aunque puedo generar el archivo pdf correspondiente pero el contenido del archivo falta. Comprobé que el informe que intento convertir no está vacío. Solo la sección de encabezado está presente allí dentro de los archivos pdf generados. A continuación está el código que estoy usando:

protected void GeneratePDFFromReport(object sender, EventArgs e)
    {
        RS2005.ReportingService2005 rs;
        RE2005.ReportExecutionService rsExec;

       //Create a new proxy to the web service
        rs = new RS2005.ReportingService2005();
        rsExec = new RE2005.ReportExecutionService();

       //Authenticate to the Web service using Windows credentials
        rs.Credentials = new System.Net.NetworkCredential("username", "password", "domain");
        rsExec.Credentials = new System.Net.NetworkCredential("username", "password", "domain");
        //rsExec.Credentials = System.Net.CredentialCache.DefaultCredentials;

        rs.Url = "http://servername/reportserver/reportservice2005.asmx";
        rsExec.Url = "http://servername/reportserver/reportexecution2005.asmx";

        string historyID = null;
        string deviceInfo = null;
        string format = "PDF";
        Byte[] results;
        string encoding = String.Empty;
        string mimeType = "application/pdf";
        string extension = String.Empty;
        RE2005.Warning[] warnings = null;
        string[] streamIDs = null;

       //Path of the Report - XLS, PDF etc.
        string fileName = @"C:\Report\MemberReport.pdf";
       //Name of the report - Please note this is not the RDL file.
        string _reportName = @"/ReportFolder/ReportName";
        string _historyID = null;
        bool _forRendering = false;
        RS2005.ParameterValue[] _values = null;
        RS2005.DataSourceCredentials[] _credentials = null;
        RS2005.ReportParameter[] _parameters = null;

        try
        {
            _parameters = rs.GetReportParameters(_reportName, _historyID, _forRendering, _values, _credentials);
            RE2005.ExecutionInfo ei = rsExec.LoadReport(_reportName, historyID);

            results = rsExec.Render(format, deviceInfo,
                      out extension, out encoding,
                      out mimeType, out warnings, out streamIDs);

            try
            {
                FileStream stream = File.Create(fileName, results.Length);
                stream.Write(results, 0, results.Length);
                stream.Close();
            }
            catch { }

            results = null;
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }

Cualquier ayuda sería muy apreciada. Gracias.

0

1 Respuestas

Suponiendo que SSRS funciona correctamente usando el navegador, modifique el código publicado como se muestra a continuación:

1) Cadena de información del dispositivo, configúrelo de la siguiente manera:

string deviceInfo =  @"False"; //Initial value was null

2) Crear instancia de encabezado antes de usar la llamada web LoadReport:

ExecutionHeader execHeader = new ExecutionHeader();
RE2005.ExecutionHeaderValue = execHeader;
0
agregado