SSRS ReportViewer nullReference在处置方面的异常



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

的语句所引起的

但是,添加此后,代码在使用 block关闭 block后,将代码抛出了一个nullReference异常,源自内部 dispose method。

的代码。 。

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

答案,如在此处的Visual Basic中可以找到的,因为由于某种原因,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实例。

最新更新