Passage des informations d’identification à SQL Server 2008

Je suis assez nouveau en C # et mon anglais n’est pas très bon – désolé d’avance si je rate un point.

J’ai essayé de créer un site Web ASP.NET avec un contrôle ReportService . Comme vous le savez peut-être déjà, SSRS 2008 n’autorise pas la connexion anonyme. J’ai donc essayé de transmettre des informations d’identification à SSRS, qui seront stockées dans ma page Web afin que les utilisateurs puissent voir le rapport sans se connecter.

J’ai trouvé le code ci-dessous et l’ai mis sur mon WebForm , mais les parameters de rapport me posent un problème.

Avez-vous des suggestions pour éviter d’actualiser toute la page ou un autre moyen de transmettre les informations de connexion à SSRS? Merci beaucoup d’avance.

 using System; using System.Configuration; using System.Data; using System.Linq; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Xml.Linq; using System.Net; using Microsoft.Reporting.WebForms; public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { ReportViewer1.Width = 800; ReportViewer1.Height = 600; ReportViewer1.ProcessingMode = ProcessingMode.Remote; IReportServerCredentials irsc =new CustomReportCredentials("administrator", "MYpassworw", "domena"); ReportViewer1.ServerReport.ReportServerCredentials = irsc; ReportViewer1.ServerReport.ReportServerUrl = new Uri("http://192.168.0.1/ReportServer/"); ReportViewer1.ServerReport.ReportPath = "/autonarudzba/listanarudzbi"; ReportViewer1.ServerReport.Refresh(); } } public class CustomReportCredentials : IReportServerCredentials { private ssortingng _UserName; private ssortingng _PassWord; private ssortingng _DomainName; public CustomReportCredentials(ssortingng UserName, ssortingng PassWord, ssortingng DomainName) { _UserName = UserName; _PassWord = PassWord; _DomainName = DomainName; } public System.Security.Principal.WindowsIdentity ImpersonationUser { get { return null; } } public ICredentials NetworkCredentials { get { return new NetworkCredential(_UserName, _PassWord, _DomainName); } } public bool GetFormsCredentials(out Cookie authCookie, out ssortingng user, out ssortingng password, out ssortingng authority) { authCookie = null; user = password = authority = null; return false; } } 

Je n’ai pas vraiment foiré SSRS – mais mon chapeau ASP.NET me dit que vous voudrez peut-être envelopper cette substance dans un bloc if (!IsPostBack) pour l’empêcher de s’exécuter sur l’actualisation de la page. Je suppose que ReportViewer1.ServerReport.Refresh() extrait à nouveau les valeurs par défaut.

 protected void Page_Load(object sender, EventArgs e) { if (!this.IsPostBack) { ReportViewer1.Width = 800; ReportViewer1.Height = 600; ReportViewer1.ProcessingMode = ProcessingMode.Remote; IReportServerCredentials irsc =new CustomReportCredentials("administrator", "MYpassworw", "domena"); ReportViewer1.ServerReport.ReportServerCredentials = irsc; ReportViewer1.ServerReport.ReportServerUrl = new Uri("http://192.168.0.1/ReportServer/"); ReportViewer1.ServerReport.ReportPath = "/autonarudzba/listanarudzbi"; ReportViewer1.ServerReport.Refresh(); } } 

J’ai créé une nouvelle fonction et l’ai sélectionnée dans la vue Conception sur les propriétés, les événements, ReportViewer. (Dans la sélection INIT i)

Après cela, la page fonctionne normalement et je peux modifier les valeurs des parameters.

Default.aspx ressemble maintenant à:

    

Et Default.aspx.cs ressemble à ceci

  public void Admir(object sender, EventArgs e) { ReportViewer1.Width = 800; ReportViewer1.Height = 600; ReportViewer1.ProcessingMode = ProcessingMode.Remote; IReportServerCredentials irsc = new CustomReportCredentials("administrator", "mypass", "domena"); ReportViewer1.ServerReport.ReportServerCredentials = irsc; ReportViewer1.ServerReport.ReportServerUrl = new Uri("http://192.168.0.1/ReportServer/"); ReportViewer1.ServerReport.ReportPath = "/autonarudzba/listanarudzbi"; ReportViewer1.ServerReport.Refresh(); } protected void Page_Load(object sender, EventArgs e) { } 

vous pouvez utiliser le code suivant dans l’événement de chargement de page pour donner des parameters

 ReportParameter[] reportParameterCollection = new ReportParameter[1]; //Array size describes the number of paramaters. reportParameterCollection[0] = new ReportParameter(); reportParameterCollection[0].Name = "ACCMGR"; //Give Your Parameter Name reportParameterCollection[0].Values.Add("12"); //Pass Parametrs's value here. ReportViewer1.ServerReport.SetParameters(reportParameterCollection); ReportViewer1.ServerReport.Refresh(); 

J’espère que cela fonctionne pour vous

J’ai trouvé la solution pour cela. vous devez d’abord définir les informations d’identification, puis le paramètre pour reportviewer.

  rvCommon.ProcessingMode = ProcessingMode.Remote; rvCommon.ServerReport.ReportServerUrl = new System.Uri("SSRSReportServerURL"); rvCommon.ServerReport.ReportPath = "/Report Parts/CustomerMainReport2" ; Microsoft.Reporting.WebForms.ReportParameter[] RptParameters = new Microsoft.Reporting.WebForms.ReportParameter[1]; rvCommon.ServerReport.ReportServerCredentials = new ReportCredentials("username", "password", ""); RptParameters[0] = new Microsoft.Reporting.WebForms.ReportParameter("CustomerId", "1"); rvCommon.ServerReport.SetParameters(RptParameters); rvCommon.ServerReport.Refresh();