发布后过一段时间报表就不能正常显示
本帖最后由 Crystal.Li 于 2021-4-14 09:47 编辑现在碰到的情况是发布了正式环境到客户之后,在客户服务器上面刚部署完毕是正常显示的,然后过了一段时间之后(具体时间未计算)再次用同样的数据查看报表,报表会提示“渲染文档内容失败”点击详细就会提示“未将对象引用至对象的实例”。现阶段解决的方法只能重启IIS,但是需要查找具体原因。还望能协助调查。
您好,可以看一下您这边工程里边 Document_LocateDataSource 方法是怎么写的吗?现在可能有这两方面的原因:
1、Document_LocateDataSource 这个方法可能写的有问题,导致dataTable获取数据失败;
2、然后您这个报表设计也相对挺复杂的,有可能就是报表设计问题。
第一个问题您可以先在本地试下,删除现有的报表设计,还是用原来的数据,拖一个简单的数据表,看是否都是正常的。如果正常可能就是报表设计原因。
其实其中一个报表就是很简单的报表,也是同样的问题。问题不在于报表,数据源的数据肯定也是相对固定的,不会有太大的变化的。 mayinfei 发表于 2021-4-14 10:01
其实其中一个报表就是很简单的报表,也是同样的问题。问题不在于报表,数据源的数据肯定也是相对固定的,不 ...
那您发一下您这边工程里边 Document_LocateDataSource 方法是怎么定义的 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); 您在您这个LocateDataSource 方法调用的时候加一行 释放内存的代码:
args.Report.Dispose();//释放内存
目前的话,考虑如果不是报表设计和数据问题,应该是内存占用满了导致出错。
因为每次重启会释放内存,所以重启之后就会正常。报表渲染与您部署的机器配置也有关系,配置可能有点低,所以您每次调用的时候释放一下内存应该可以解决~~ 这个代码加在哪里比较合适呢,我这里加了之后报表都不能正常显示了 mayinfei 发表于 2021-4-15 16:17
这个代码加在哪里比较合适呢,我这里加了之后报表都不能正常显示了
您好,代码加在下面截图的位置
如果放在这这个地方的话报表直接就异常了:Q mayinfei 发表于 2021-4-19 13:49
如果放在这这个地方的话报表直接就异常了
具体是什么异常,有报错或者截图吗
页:
[1]