Search code examples
reportviewerreport-viewer2010

SSRS ReportViewer fails when using parameters


I'm using the ReportViewer control in VS2010.

In my local and development environments when I use:

    ReportParameter[] toReportParameterList = new ReportParameter[1];
    toReportParameterList[0] = new ReportParameter("intApplicationID", Session["APPLICATION_ID"]);
    rvFinancialSummaryReport.ServerReport.SetParameters(toReportParameterList);

Everything works properly.

When I try to do the exact same thing in my Staging/Beta environment, I get an HTTP 401 not authorized error.

When I comment out those three lines, the report parameter section loads and I can get the report correctly when I type in the parameter.

Any idea why trying to pass parameters via the server report, I get an HTTP 401?

EDIT

I should probably add that I am sending credential information as such:

    string tsUserNameDomain = ConfigurationManager.AppSettings["ReportUserName"].ToString();
    string tsDomain = tsUserNameDomain.Substring(0, tsUserNameDomain.IndexOf("\\"));
    string tsUsername = tsUserNameDomain.Substring(tsUserNameDomain.IndexOf("\\") + 1);
    string tsPassword = ConfigurationManager.AppSettings["ReportPassword"].ToString();
    ReportViewerCredentials toCredentials = new ReportViewerCredentials(tsUsername, tsPassword, tsDomain);
    rvFinancialSummaryReport.ServerReport.ReportServerCredentials = toCredentials;

This works as long as there is no parameters set.

EDIT

Just to Reiterate... when I comment this line:

rvFinancialSummaryReport.ServerReport.SetParameters(toReportParameterList);

It works...

When I uncomment this line:

rvFinancialSummaryReport.ServerReport.SetParameters(toReportParameterList);

I get an HTTP 401: Unauthorized.

EDIT

Another detail... my SSRS server is HTTP, my IIS is HTTPS...


Solution

  • It would seem that the order of operations in this scenario is important.

    After some extensive testing on a local server, I realized that after the parameter value was set, when I went to set the credential values the parameter array object on the server report was coming back as null.

    I moved the instantiation of the credential object to the top of the page load, and now everything is working properly.