如果存在报告以防止 rsItemNotFound,如何检查 ReportViewer?

How to check in ReportViewer if a report exists to prevent rsItemNotFound?

我正在按照以下方式将报告加载到我的 ReportViewer 10.0 中:

MyReportViewer.ServerReport.ReportPath = "/My.Report.Folder/DoesNotExist";

// The following call throws a ReportServerException ("...rsItemNotFound...")
var requestedParameters = MyReportViewer.ServerReport.GetParameters();

var filledParameters = GetFilledParameters(requestedParameters);

MyReportViewer.ServerReport.SetParameters(requestedParameters);
MyReportViewer.ServerReport.Refresh();

这工作正常,除非报告不存在。在这种情况下,GetParameters() 调用将失败并显示 ReportServerException 和一条消息:

The item '/My.Report.Folder/DoesNotExist' cannot be found. (rsItemNotFound)

当然我可以在此处使用 try...catch 块来阻止这种情况,但我宁愿明确检查报告是否存在。有没有办法使用 ReportViewer 组件来做到这一点?或者我需要连接到 SSRS 网络服务吗?

我浏览了 MyReportViewer.ServerReport 的方法和属性,但没有发现任何有用的东西。我还检查了 this related question,但它实际上不在 ReportViewer 控件的上下文中。

我对其他答案持开放态度,但在此之前,这是我目前的解决方法:

try
{
    var requestedParameters = MyReportViewer.ServerReport.GetParameters();

    var filledParameters = GetFilledParameters(requestedParameters);

    MyReportViewer.ServerReport.SetParameters(requestedParameters);
    MyReportViewer.ServerReport.Refresh();
}
catch (ReportServerException exception)
{
    if (!exception.Message.Contains("rsItemNotFound"))
    {
        throw;
    }
    // Else... ReportViewer will show "rsItemNotFound" error. 
    // Or you can do something fancy in your app here, I suppose :-)
}