Written with StackEdit.
问题场景
使用本地工具可以预览,但是把模板应用到线上出现500
线上异常
"Stimulsoft.Base.Serializing.StiDashboardAssemblyIsNotFoundException: 引发类型为“Stimulsoft.Base.Serializing.StiDashboardAssemblyIsNotFoundException”的异常。
在 Stimulsoft.Base.Serializing.StiSerializing.GetObjectFromType(String typeStr) 位置 D:\\Stimulsoft\\Stimulsoft.Reports\\Stimulsoft.Base\\Serializing\\StiSerializing.cs:行号 148
在 Stimulsoft.Base.Serializing.StiSerializing.DeserializeObject(XmlTextReader tr, String parentPropName) 位置 D:\\Stimulsoft\\Stimulsoft.Reports\\Stimulsoft.Base\\Serializing\\StiSerializing.cs:行号 1114
在 Stimulsoft.Base.Serializing.StiSerializing.DeserializeObject(XmlTextReader tr, String parentPropName) 位置 D:\\Stimulsoft\\Stimulsoft.Reports\\Stimulsoft.Base\\Serializing\\StiSerializing.cs:行号 1084
在 Stimulsoft.Base.Serializing.StiSerializing.Deserialize(Object obj, Stream stream, String application) 位置 D:\\Stimulsoft\\Stimulsoft.Reports\\Stimulsoft.Base\\Serializing\\StiSerializing.cs:行号 1186
在 Stimulsoft.Report.SaveLoad.StiXmlReportSLService.Load(StiReport report, Stream stream) 位置 D:\\Stimulsoft\\Stimulsoft.Reports\\Stimulsoft.Report\\SaveLoad\\StiXmlReportSLService.cs:行号 94
在 Stimulsoft.Report.StiReport.Load(StiReportSLService service, Stream stream) 位置 D:\\Stimulsoft\\Stimulsoft.Reports\\Stimulsoft.Report\\StiReport.SaveLoad.cs:行号 1519
在 Stimulsoft.Report.StiReport.Load(Stream stream) 位置 D:\\Stimulsoft\\Stimulsoft.Reports\\Stimulsoft.Report\\StiReport.SaveLoad.cs:行号 1391
在 Stimulsoft.Report.StiReport.Load(String path) 位置 D:\\Stimulsoft\\Stimulsoft.Reports\\Stimulsoft.Report\\StiReport.SaveLoad.cs:行号 1440
在 renderEngine.Dlls.ReportDecompressDll.getStiReport(ExportRequest exportRequest, Byte[] datasource, List`1 variables, String path) 位置 D:\\github\\sti\\renderEngine\\renderEngine\\renderEngine\\Dlls\\ReportTranslateDll.cs:行号 61"
排查过程
- 既然我们在本地使用工具是可以渲染成功,说明我们的数据应用我们的报表在本地是可以使用的
- 然后就思考是不是我们线上部署的报表版本和本地版本不一致导致
- 发现我们本地使用的是2019.4.2版本,线上使用的是2019.3.4版本,想到可能是版本导致
- 冲隐进行测试,在测试环境搭建2019.4.2版本服务,发现依旧有问题
- 猜测可能是同一版本服务器版本和本地工具有差异性导致
- 开始逐步删除报表内容,排查问题,达菲发现报表里多了一个仪表盘
- 删除仪表盘回归到服务器渲染成功
排查结果
在报表里多配置了一个仪表盘导致渲染失败
疑问
- 为什么在本地可以成功呢?(感觉还是存在着本地与服务器版本的差异性)
思考
- 我们现在还没有能力进行异常日志的分析来定位原因,其实根据这次情况来看,我们的异常日志已经很清晰的描述了异常问题 StiDashboardAssemblyIsNotFoundException ,只是我们不明白异常的可能原因及排查思路