SQL Server Reporting Services 및 .Net Core

13530 단어 ssrssqlserverdotnet
Net Core는 SSRS(SQL Server Reporting Services)를 공식적으로 사용하지 않고 보고서에 대한 웹 서비스 법적 허용 일반 내보내기를 사용하지 못하도록 금지합니다.

La URL a consumir cuenta con un formato similar al siguiente, donde es la instancia de tu servidor de SSRS.

https:///ReportServer/ReportExecution2005.asmx?wsdl



Visual Studio는 웹 서비스가 존재하지 않는 기본 코드를 수입할 수 있도록 허용하고 Visual Studio에서 Net Core를 프로젝트에 적용할 수 있도록 현실화합니다.
  • derecho en la sección "Dependencias"y seleccionar la opción "Agregar servicio conecado"를 클릭합니다.
  • "Microsoft WCF 웹 서비스 참조 공급자"옵션을 선택합니다.
  • Llenar el Wizard que aparecera en pantalla con la URL del webservice y el namespace en el cual se desea generar el codigo.

  • 코드 조각은 네트워크 코어에 적용되는 웹 서비스를 활용하기 위해 필요한 코드 조각입니다.

    private ReportExecutionServiceSoapClient GetProxy()
    {
        var proxy = new ReportExecutionServiceSoapClient(GetBinding(), GetEndpointAddress());
        proxy.ClientCredentials.Windows.ClientCredential = new NetworkCredential(config.ReportUserName, config.ReportPassword, config.ReportUserNameDominio);
    
        return proxy;
    }
    
    private HttpBindingBase GetBinding(bool isHttps)
    {
        HttpBindingBase result = null;
    
        if (isHttps)
        {
            result = new BasicHttpsBinding() 
            { 
                Security = { 
                    Mode = BasicHttpsSecurityMode.Transport 
                }
            };
        }
        else
        {
            result = new BasicHttpBinding() 
            {
                Security = { 
                    Mode = BasicHttpSecurityMode.TransportCredentialOnly,
                    Transport = { 
                                        ClientCredentialType = HttpClientCredentialType.Ntlm, 
                      ProxyCredentialType = HttpProxyCredentialType.None
                    }
                }
            };
        }
    
        result.MaxReceivedMessageSize = int.MaxValue;
        result.MaxBufferSize = int.MaxValue;
    
        return result;
    }
    
    public async Task<object> ExportReport(string reportPath, string reportName, Dictionary<string, string> parameters)
    {
        try
        {
            var proxy = GetProxy();
            var rsParameters = parameters.Select(it => new ParameterValue() { Name = it.Key, Value = it.Value }).ToArray();
            var trustedUserHeader = new TrustedUserHeader();
    
            var loadResponse = await proxy.LoadReportAsync(trustedUserHeader, $"{reportPath}{reportName}", null);
            var executionHeader = new ExecutionHeader()
            { 
                ExecutionID = loadResponse.executionInfo.ExecutionID
            };
    
            await proxy.SetExecutionParametersAsync(executionHeader, trustedUserHeader, rsParameters, "");
    
            var request = new RenderRequest(executionHeader,
                trustedUserHeader,
                exportType.ToString(),
                new XElement("DeviceInfo", new XElement("OutputFormat", "PDF")).ToString()
            );
    
            var response = await proxy.RenderAsync(request);
    
            await proxy.CloseAsync();
    
            return new 
            {
                Bytes = response.Result,
                Encoding = response.Encoding,
                FileNameExtension = response.Extension,
                MimeType = response.MimeType,
                Streams = response.StreamIds,
                Warnings = response.Warnings?.Select(it => it.Message).ToArray()
            };
        }
        catch (Exception ex)
        {
            string message = ex.GetBaseException().Message;
            throw ex;
        }
    }
    


    SSRS에서 PDF로 보고서를 내보내는 "ExportReport"기능을 사용할 수 있습니다.

    var report = await ExportReport("intancia/misReportes", 
        "Empleados",
        new Dictionary<string, string>() { {"Departamento", "IT"} }
    );
    


    Para mas información honoro a este tema, se pueden Consultar los siguientes enlaces:

    Report Server Web Service Endpoints - SQL Server Reporting Services (SSRS)

    좋은 웹페이지 즐겨찾기