Home > asp.NET, C# > C# :: SQL ReportServer in asp.NET

C# :: SQL ReportServer in asp.NET

Voraussetzung für die Umsetzung dieses Beitrags ist ein funktionierender Report auf Basis des SQL Reporting Services. Hierbei ist es unerheblich mit welcher SQL Server Version (2005[8.0] oder 2008[9.0]) gearbeitet wird. Die asp.NET-Umsetzung habe ich im Framework 2.0 umgesetzt.

Zunächst brauchen wir eine (in meinem Fall serialisierbare) Klasse, die das Interface Microsoft.Reporting.Webforms.IReportsServerCrendentials zur Ausführung des Reports implementiert:

[Serializable]
public class ReportCredentials :
      Microsoft.Reporting.WebForms.IReportServerCredentials
{
   string _userName, _password, _domain;

   public ReportCredentials(string userName, string password,
            string domain)
   {
      _userName = userName;
      _password = password;
      _domain = domain;
   }

   public System.Security.Principal.WindowsIdentity  ImpersonationUser
   {
      get
      {
          return null;
       }
    }

   public System.Net.ICredentials NetworkCredentials
   {
     get
     {
        return new System.Net.NetworkCredential
                       (_userName, _password, _domain);
     }
   }

   public bool GetFormsCredentials(out System.Net.Cookie authCookie,
             out string userName, out string password,
             out string authority)
   {
      userName = _userName;
      password = _password;
      authority = _domain;
      authCookie = new System.Net.Cookie
                      (“.ASPXAUTH”, “.ASPXAUTH”, “/”, “Domain”);
      return true;
     }
}

 Auf der aspx-Page, auf der der Report eingebunden werden soll, muss ein Steuerelement “ReportViewer” und folgender Code eingefügt werden:

protected void Page_Load(object sender, EventArgs e)
{
  if (!IsPostBack)
  {
    ReportViewer1.ShowCredentialPrompts = false;
    ReportViewer1.ServerReport.ReportServerCredentials =
             new ReportCredentials(“UserName”, “Passwort”, “”);
    ReportViewer1.ProcessingMode = 
             Microsoft.Reporting.WebForms.ProcessingMode.Remote;
    ReportViewer1.ServerReport.ReportServerUrl =
             new System.Uri(“http://reportserver/ReportServer”);
    ReportViewer1.ServerReport.ReportPath =
             “/Path2Report/ReportName”;

    ReportViewer1.ServerReport.Refresh();
  }
}

Auch eine Parametrisierung aus der Webpage ist möglich:

ReportParameter[] param = new ReportParameter[1];
param[0] = new ReportParameter(“ReportParam”, txtParameter.Text);

ReportViewer1.ServerReport.SetParameters(param);

 

Und zu guter letzt muss noch ein Abschnitt in der web.config im Abschnitt <system.web><httpHandlers>  angelegt werden:

<add verb=”*” path=”Reserved.ReportViewerWebControl.axd” type = “Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a” />

Kategorienasp.NET, C# Tags:
  1. Bisher keine Kommentare
  1. Bisher keine Trackbacks

Spam protection by WP Captcha-Free