找回密码
 立即注册

QQ登录

只需一步,快速开始

mayinfei

注册会员

5

主题

13

帖子

44

积分

注册会员

积分
44
mayinfei
注册会员   /  发表于:2021-4-14 09:28  /   查看:3408  /  回复:9
1金币
本帖最后由 Crystal.Li 于 2021-4-14 09:47 编辑

现在碰到的情况是发布了正式环境到客户之后,在客户服务器上面刚部署完毕是正常显示的,然后过了一段时间之后(具体时间未计算)再次用同样的数据查看报表,报表会提示“渲染文档内容失败”点击详细就会提示“未将对象引用至对象的实例”。现阶段解决的方法只能重启IIS,但是需要查找具体原因。还望能协助调查。

附件: 您需要 登录 才可以下载或查看,没有帐号?立即注册

9 个回复

倒序浏览
Crystal.Li讲师达人认证 悬赏达人认证
论坛元老   /  发表于:2021-4-14 09:54:54
沙发
您好,可以看一下您这边工程里边 Document_LocateDataSource 方法是怎么写的吗?现在可能有这两方面的原因:
1、Document_LocateDataSource 这个方法可能写的有问题,导致dataTable获取数据失败;
2、然后您这个报表设计也相对挺复杂的,有可能就是报表设计问题。

第一个问题您可以先在本地试下,删除现有的报表设计,还是用原来的数据,拖一个简单的数据表,看是否都是正常的。如果正常可能就是报表设计原因。
回复 使用道具 举报
mayinfei
注册会员   /  发表于:2021-4-14 10:01:36
板凳
其实其中一个报表就是很简单的报表,也是同样的问题。问题不在于报表,数据源的数据肯定也是相对固定的,不会有太大的变化的。
回复 使用道具 举报
Crystal.Li讲师达人认证 悬赏达人认证
论坛元老   /  发表于:2021-4-14 10:04:50
地板
mayinfei 发表于 2021-4-14 10:01
其实其中一个报表就是很简单的报表,也是同样的问题。问题不在于报表,数据源的数据肯定也是相对固定的,不 ...

那您发一下您这边工程里边 Document_LocateDataSource 方法是怎么定义的
回复 使用道具 举报
mayinfei
注册会员   /  发表于:2021-4-14 10:06:10
5#
app.UseReporting(settings =>
            {
                settings.UseCompression = true;
                settings.UseCustomStore(GetReport);//使用UseCustomStore来自定义一些需要的值
                //string path = System.Web.Hosting.HostingEnvironment.MapPath("~/");
                //settings.UseFileStore(new DirectoryInfo(@"" + path + "Reports"));
                //settings.UseFileStore(new DirectoryInfo(String.Format(@"{0}.\Reports", System.Web.HttpRuntime.AppDomainAppPath)));
                //settings.UseFileStore(new DirectoryInfo(@"E:\\vssdata\\NGK_WebWork\\WebWork2.Web\\Reports"));
                settings.LocateDataSource = args =>
                {
                    if (args.Report.Name.ToString() == "ReportDemo4.rdlx")
                    {
                        if (args.DataSet.Query.DataSourceName == "DataSource")
                        {
                            if (args.DataSet.Name == "shengchanshiji")
                            {
                                return GetData2();
                            }

                            if (args.DataSet.Name == "tiaozhengshijian")
                            {
                                return GetData();
                            }

                            if (args.DataSet.Name == "qitashijian")
                            {
                                return GetData3();
                            }

                            if (args.DataSet.Name == "tiaozhengpinfan")
                            {
                                return GetData4();
                            }

                            if (args.DataSet.Name == "guzhangjilu")
                            {
                                return GetData5();
                            }
                        }
                        return null;
                    }
                    else if (args.Report.Name.ToString() == "ReportDemo2.rdlx")
                    {
                        if (args.DataSet.Query.DataSourceName == "DataSource")
                        {
                            if (args.DataSet.Name == "DataSetBuLiangPin")
                            {
                                return GetData6();
                            }
                        }
                        return null;
                    }
                    else
                    {
                        return null;
                    }

                };
                //settings.UseCompression = true;
            });
            RouteTable.Routes.RouteExistingFiles = true;
            ConfigureAuth(app);
回复 使用道具 举报
Crystal.Li讲师达人认证 悬赏达人认证
论坛元老   /  发表于:2021-4-14 11:16:17
6#
您在您这个LocateDataSource 方法调用的时候加一行 释放内存的代码:
    args.Report.Dispose();//释放内存
目前的话,考虑如果不是报表设计和数据问题,应该是内存占用满了导致出错。
因为每次重启会释放内存,所以重启之后就会正常。报表渲染与您部署的机器配置也有关系,配置可能有点低,所以您每次调用的时候释放一下内存应该可以解决~~
回复 使用道具 举报
mayinfei
注册会员   /  发表于:2021-4-15 16:17:52
7#
这个代码加在哪里比较合适呢,我这里加了之后报表都不能正常显示了
回复 使用道具 举报
James.Lv讲师达人认证 悬赏达人认证 活字格认证 Wyn认证
超级版主   /  发表于:2021-4-15 18:34:27
8#
mayinfei 发表于 2021-4-15 16:17
这个代码加在哪里比较合适呢,我这里加了之后报表都不能正常显示了

您好,代码加在下面截图的位置

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
mayinfei
注册会员   /  发表于:2021-4-19 13:49:38
9#
如果放在这这个地方的话报表直接就异常了
回复 使用道具 举报
Crystal.Li讲师达人认证 悬赏达人认证
论坛元老   /  发表于:2021-4-19 14:01:40
10#
mayinfei 发表于 2021-4-19 13:49
如果放在这这个地方的话报表直接就异常了

具体是什么异常,有报错或者截图吗
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部