我的CRM系统中有一个Trace实体,我想为该实体插入记录,无论插件或工作流活动是否失败。当实时插件/工作流失败时,所有已发生的数据操作都会回滚,因此任何插入的跟踪记录也会回滚。
我知道我可以使用ITracingService,但很多时候,当发生错误时,最终用户不愿意/能够将问题转发给我。
有没有人知道将Trace记录插入到事务之外的受支持方式,因此无论代码是成功还是失败,它们都可用?
答案 0 :(得分:2)
如果您正在使用Dynamics CRM Online(现在从Spring Update开始支持此功能)。它运行良好,并在1天后自动清除日志。
对于内部部署,您必须在执行事务之外编写它们。所以,你有几个不同的选择:
使用存储的凭据创建与Dynamics CRM的新连接(将它们存储在自定义实体或插件步骤的不安全或安全配置字符串中(建议您加密密码,无论您选择哪个选项。)
使用NLog(或Log4Net)等工具并将其记录为与任何其他.NET应用程序相同(因为在线和沙盒不是限制。)
滚动您自己的自定义日志记录解决方案并写入磁盘或Web服务。使其实现ITracingService
(它只有一个简单的方法),它可以在任何可能使用CRM的跟踪实现的地方使用。您可以在此处查看我的快速实施(用于其他目的):https://stackoverflow.com/a/28186429/394978。您仍然需要实现写入disk / webservice / sql。顺便说一句,让它写入Web服务,从技术上讲,它仍然可以在CRM Online中运行。