我在VS2010中使用了ReportViewer控件。
在我使用本地和开发环境时:
ReportParameter[] toReportParameterList = new ReportParameter[1];
toReportParameterList[0] = new ReportParameter("intApplicationID", Session["APPLICATION_ID"]);
rvFinancialSummaryReport.ServerReport.SetParameters(toReportParameterList);
一切正常。
当我尝试在Staging / Beta环境中执行完全相同的操作时,我收到HTTP 401未授权错误。
当我注释掉这三行时,报告参数部分会加载,我可以在输入参数时正确获取报告。
为什么尝试通过服务器报告传递参数,我得到一个HTTP 401?
修改
我应该补充一点,我发送的是凭证信息:
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;
只要没有设置参数,这就可以工作。
修改
重申...当我评论这一行时:
rvFinancialSummaryReport.ServerReport.SetParameters(toReportParameterList);
它有效......
当我取消注释这一行时:
rvFinancialSummaryReport.ServerReport.SetParameters(toReportParameterList);
我收到HTTP 401:未经授权。
修改
另一个细节......我的SSRS服务器是HTTP,我的IIS是HTTPS ......
答案 0 :(得分:0)
这种情况下的操作顺序似乎很重要。
在本地服务器上进行了一些广泛的测试后,我意识到在设置参数值之后,当我去设置凭证值时,服务器报告上的参数数组对象将返回为空。
我将凭据对象的实例化移到了页面加载的顶部,现在一切正常。