Disposing上的SSRS ReportViewer null引用异常

时间:2017-09-12 13:28:54

标签: reporting-services reportviewer dispose

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

周围缺少使用语句造成的

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

为什么会出现此错误?如何正确处理对象?

1 个答案:

答案 0 :(得分:2)

可以在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实例。