Microsoft Dynamics CRM报System.NullReferenceException错误求助
Microsoft Dynamics CRM 空引用异常(参考号#DF5EC476)排查方案
前端弹出的System.NullReferenceException是裁剪后的通用提示,没有带具体错误堆栈,按以下步骤定位修复即可:
- 第一步:获取完整错误堆栈
用错误附带的参考号#DF5EC476检索对应日志,拿到完整调用链才能精准定位问题:- 本地部署版:登录CRM前端服务器,打开
事件查看器 > Windows日志 > 应用程序,筛选来源为MSCRMWeb的日志,匹配你触发错误的时间点,找到带对应参考号的日志条目,里面会记录完整的异常堆栈、触发错误的模块/代码位置 - 在线版:登录Power Platform管理中心,进入对应环境的「监控 > 日志」板块,用参考号检索对应错误详情
- 本地部署版:登录CRM前端服务器,打开
- 第二步:高频场景快速排查(无需拉日志可先验证)
这类错误90%以上是自定义逻辑或配置变更导致的,优先检查最近的变更项:- 如果你最近更新/上线过插件、自定义工作流、Action:检查代码里是否存在未做非空判断就直接取值的逻辑,比如直接调用
entity.Attributes["字段名"].ToString()但对应字段值为空、直接取关联实体属性但关联记录不存在,这类写法是触发空引用的最高频原因,给对应取值逻辑加上非空判断即可修复 - 如果是打开表单、切换表单字段时报错:检查表单绑定的JavaScript脚本、自定义Web资源,看OnLoad/OnChange事件里是否存在直接调用控件/字段值方法但没判空的情况,比如
Xrm.Page.getAttribute("字段名").getValue()返回null时直接调用字符串方法、DOM方法 - 如果是导入数据、执行批量操作时报错:检查导入文件里的查找字段值是否能匹配到对应系统记录,查找字段匹配失败返回null时,系统内置逻辑也可能触发空引用
- 如果你最近删除过实体字段、停用流程/插件、调整过安全角色:先回滚最近的配置变更,测试错误是否复现
- 如果你最近更新/上线过插件、自定义工作流、Action:检查代码里是否存在未做非空判断就直接取值的逻辑,比如直接调用
- 第三步:权限问题验证
切换系统管理员账号执行相同操作,如果管理员操作无报错,可直接定位为权限问题:当前用户没有某类关联记录/字段的读取权限时,系统取数返回null,后续逻辑未做判空就会触发异常,补全对应实体、字段的安全角色权限即可。
- 第四步:代码修复参考
定位到问题点后,所有取值逻辑前加非空校验即可:
插件C#代码校验示例:
表单JS代码校验示例:// 取值前先判断字段存在且值不为空 if (entity.Contains("new_customfield") && entity["new_customfield"] != null) { var fieldValue = entity["new_customfield"].ToString(); // 后续业务逻辑 }var fieldValue = Xrm.Page.getAttribute("new_customfield").getValue(); if (fieldValue !== null && fieldValue !== undefined) { // 后续业务逻辑 }
内容的提问来源于stack exchange,提问作者Himanshu
相关产品推荐
相关产品推荐

