Esempio n. 1
0
    public ReportServerCreds GetReportCreds()
    {
        ReportServerCreds rsc = new ReportServerCreds();

        rsc.UserName = ConfigurationManager.AppSettings["reportserveruser"].ToString();
        rsc.Password = ConfigurationManager.AppSettings["reportserverpassword"].ToString();
        rsc.Domain   = ConfigurationManager.AppSettings["reportserverdomain"].ToString();

        return(rsc);
    }
Esempio n. 2
0
    public string RenderReport(string reportpath, SSRSExportType ExportType)
    {
        using (ReportExecutionService.ReportExecutionServiceSoapClient res = new   ReportExecutionService.ReportExecutionServiceSoapClient("ReportExecutionServiceSoap"))
        {
            ReportExecutionService.ExecutionHeader   ExecutionHeader   = new ReportExecutionService.ExecutionHeader();
            ReportExecutionService.TrustedUserHeader TrusteduserHeader = new ReportExecutionService.TrustedUserHeader();

            res.ClientCredentials.Windows.AllowedImpersonationLevel = System.Security.Principal.TokenImpersonationLevel.Impersonation;

            ReportServerCreds rsc = GetReportCreds();
            res.ClientCredentials.Windows.ClientCredential.Domain   = rsc.Domain;
            res.ClientCredentials.Windows.ClientCredential.UserName = rsc.UserName;
            res.ClientCredentials.Windows.ClientCredential.Password = rsc.Password;


            res.Open();
            ReportExecutionService.ExecutionInfo ei = new ReportExecutionService.ExecutionInfo();

            string format     = null;
            string deviceinfo = null;
            string mimetype   = null;

            if (ExportType.ToString().ToLower() == "html")
            {
                format     = "HTML4.0";
                deviceinfo = @"<DeviceInfo><StreamRoot>/</StreamRoot><HTMLFragment>True</HTMLFragment></DeviceInfo>";
            }
            else if (ExportType.ToString().ToLower() == "pdf")
            {
                format   = "PDF";
                mimetype = "";
            }


            byte[] results   = null;
            string extension = null;
            string Encoding  = null;
            ReportExecutionService.Warning[] warnings;
            string[] streamids = null;
            string   historyid = null;
            ReportExecutionService.ExecutionHeader  Eheader;
            ReportExecutionService.ServerInfoHeader serverinfoheader;
            ReportExecutionService.ExecutionInfo    executioninfo;



            // Get available parameters from specified report.
            ParameterValue[]        paramvalues = null;
            DataSourceCredentials[] dscreds     = null;
            ReportParameter[]       rparams     = null;

            using (ReportService.ReportingService2005SoapClient lrs = new ReportService.ReportingService2005SoapClient("ReportingService2005Soap"))
            {
                lrs.ClientCredentials.Windows.AllowedImpersonationLevel = System.Security.Principal.TokenImpersonationLevel.Impersonation;
                lrs.ClientCredentials.Windows.ClientCredential.Domain   = rsc.Domain;
                lrs.ClientCredentials.Windows.ClientCredential.UserName = rsc.UserName;
                lrs.ClientCredentials.Windows.ClientCredential.Password = rsc.Password;


                lrs.GetReportParameters(reportpath, historyid, false, paramvalues, dscreds, out rparams);
            }



            // Set report parameters here
            //List<ReportExecutionService.ParameterValue> parametervalues = new List<ReportExecutionService.ParameterValue>();

            //string enumber = Session["ENumber"] as string;
            //parametervalues.Add(new ReportExecutionService.ParameterValue() { Name = "ENumber", Value = enumber });

            //if (date != null)
            //{
            //    DateTime dt = DateTime.Today;
            //parametervalues.Add(new ReportExecutionService.ParameterValue() { Name = "AttendanceDate", Value = dt.ToString("MM/dd/yyyy")});
            //}

            //if (ContainsParameter(rparams, "DEEWRID"))
            //{
            //parametervalues.Add(new ReportExecutionService.ParameterValue() { Name = "DEEWRID", Value = deewrid });
            //}

            //if (ContainsParameter(rparams, "BaseHostURL"))
            //{
            //                        parametervalues.Add(new ReportExecutionService.ParameterValue() { Name = "BaseHostURL", Value = string.Concat("http://", Request.Url.Authority) });
            //}


            //parametervalues.Add(new ReportExecutionService.ParameterValue() {Name="AttendanceDate",Value=null });
            //parametervalues.Add(new ReportExecutionService.ParameterValue() { Name = "ENumber", Value = "E1013" });



            try
            {
                Eheader          = res.LoadReport(TrusteduserHeader, reportpath, historyid, out serverinfoheader, out executioninfo);
                serverinfoheader = res.SetExecutionParameters(Eheader, TrusteduserHeader, parametervalues.ToArray(), null, out executioninfo);
                res.Render(Eheader, TrusteduserHeader, format, deviceinfo, out results, out extension, out mimetype, out Encoding, out warnings, out streamids);

                string exportfilename = string.Concat(enumber, reportpath);

                if (ExportType.ToString().ToLower() == "html")
                {
                    //write html
                    string html = string.Empty;
                    html = System.Text.Encoding.Default.GetString(results);

                    html = GetReportImages(res, Eheader, TrusteduserHeader, format, streamids, html);

                    return(html);
                }
                else if (ExportType.ToString().ToLower() == "pdf")
                {
                    //write to pdf


                    Response.Buffer = true;
                    Response.Clear();
                    Response.ContentType = mimetype;



                    //Response.AddHeader("content-disposition", string.Format("attachment; filename={0}.pdf", exportfilename));
                    Response.BinaryWrite(results);
                    Response.Flush();
                    Response.End();
                }
            }
            catch (Exception e)
            {
                Response.Write(e.Message);
            }
        }
    }