title: Passing Credentials to Sql Report Server 2008
body: <p>I am pretty new in C# and my English is not so good - sorry in advance if I miss a point.</p>
  
  <p>I tried to build an ASP.NET web site with a <code>ReportService</code> control. As you might already know, SSRS 2008 does not allow anonymous login. So, I tried to pass Credentials to SSRS which will be stored inside my web page so that users will be able to see the report without logging in.</p>
  
  <p>I found the code below and put it on my <code>WebForm</code>, but I'm having a problem with the report parameters. </p>
  
  <ul>
  <li><p>If there are default values for the report parameters, the below code
  works okay. </p></li>
  <li><p>But, if I try to change the value of a parameter, the whole page is<br>
  refreshed and before I  click the "View Report" button, all<br>
  parameters are reset to default or null values.</p></li>
  </ul>
  
  <p>Any suggestion on how to avoid refreshing the whole page, or another way to pass the login info to SSRS? Thanks a lot in advance.</p>
  
  <pre><code>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 string _UserName;
       private string _PassWord;
       private string _DomainName;
  
       public CustomReportCredentials(string UserName, string PassWord, string 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 string user,
        out string password, out string authority)
       {
          authCookie = null;
          user = password = authority = null;
          return false;
       }
  }
  </code></pre>