使用参数时SSRS ReportViewer失败

时间:2014-11-07 19:53:15

标签: reportviewer report-viewer2010

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

1 个答案:

答案 0 :(得分:0)

这种情况下的操作顺序似乎很重要。

在本地服务器上进行了一些广泛的测试后,我意识到在设置参数值之后,当我去设置凭证值时,服务器报告上的参数数组对象将返回为空。

我将凭据对象的实例化移到了页面加载的顶部,现在一切正常。