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...
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.