【问题标题】:SSRS ReportViewer nullreference exception on DisposingSSRS ReportViewer nullreference 异常处理
【发布时间】:2017-09-12 13:28:53
【问题描述】:

我们目前正在使用 Windows 服务来生成 PDF 文件。我最近在优化代码并注意到内存的滥用。这是由于 var reportViewer = new ReportViewer()

周围缺少 using 语句造成的

但是,添加此代码后,代码在关闭 using 块后抛出运行时空引用异常,该代码源自内部 Dispose 方法。

为什么会出现这个错误,我该如何正确处理对象?

【问题讨论】:

    标签: reporting-services reportviewer dispose


    【解决方案1】:

    答案可以在 Visual Basic here 中找到,因为由于某种原因 ReportViewer 需要一个 HttpContext。如果不存在,则会发生此错误。

    作为一种解决方法,可以添加以下行来解决问题:

                    if (System.Web.HttpContext.Current == null)
                    {
                        System.Web.HttpContext.Current = new System.Web.HttpContext(
                            new System.Web.HttpRequest(System.IO.Path.GetRandomFileName(), "https://www.stackoverflow.com", string.Empty),
                            new System.Web.HttpResponse(System.IO.TextWriter.Null)
                            );
                    }
    

    这将创建一个假的 HttpContext,允许以某种方式正确地处理 ReportViewer 实例。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-25
      • 1970-01-01
      • 2013-12-15
      • 1970-01-01
      • 1970-01-01
      • 2014-06-16
      相关资源
      最近更新 更多