none
ReportViewer Acessando Relatorio remoto com credencial RRS feed

  • Pergunta

  • Bom dia

    Estou tentando mostrar meus relatorios que estão no meu servidor do report services, usando o ReportViewer com Visual Studio 2013 para MVC.

    De todos os exemplos que vi, muitos usando a expressão: 

    reportviewer1.ServerReport.ReportServerCredentials.NetworkCredentials = new System.Net.NetworkCredential("user", "password");

    Porém se eu tentar fazer isso, a expressão da erro de parse, pois indica que a propriedade NetworkCredentials é somente leitura.

    Alguém sabe me dizer como posso fazer para passar a credencial de acesso para meu ReportViewer.

    Segue meu código:

    var reportViewer1 = new ReportViewer();
    
                reportViewer1.ProcessingMode = ProcessingMode.Remote;
    
                ServerReport serverReport = reportViewer1.ServerReport;
    
                
    
                // Set the report server URL and report path
                serverReport.ReportServerUrl = new Uri("http://localhost/Reports_DEV");
                serverReport.ReportPath = "/pasta/relatorio.rdl";

    Obrigado


    segunda-feira, 6 de julho de 2015 13:50

Respostas

  • Consegui resolver.

    É necessário criar uma classe separada onde implementa Microsoft.Reporting.WebForms.IReportServerCredentials.

    Classe de customização de credencial:

    public class ReportCredencial : Microsoft.Reporting.WebForms.IReportServerCredentials
        {
    
            public WindowsIdentity ImpersonationUser { get; private set; }
    
    
            // local variable for network credential.
            private string _UserName;
            private string _PassWord;
            private string _DomainName;
            public ReportCredencial(string UserName, string PassWord, string DomainName)
            {
                _UserName = UserName;
                _PassWord = PassWord;
                _DomainName = DomainName;
            }
    
    
            public ICredentials NetworkCredentials
            {
                get
                {
                    // use NetworkCredentials
                    return new NetworkCredential(_UserName, _PassWord, _DomainName);
                }
            }
    
            public bool GetFormsCredentials(out Cookie authCookie,
                out string user, out string password, out string authority)
            {
                // not use FormsCredentials unless you have implements a custom autentication.
                authCookie = null;
                user = password = authority = null;
                return false;
            }
        }

    Usando a credencial:

    var reportViewer1 = new ReportViewer();
    
                reportViewer1.ProcessingMode = ProcessingMode.Remote;
                reportViewer1.ServerReport.ReportServerCredentials = new ReportCredencial("user", "passw", "domain");

    Espero que ajude!

    terça-feira, 7 de julho de 2015 18:26