c# - 如何在 Dynamics CRM 中的插件事务之外执行操作

标签 c# dynamics-crm dynamics-crm-2013

我的 CRM 系统中有一个 Trace 实体,无论插件或工作流事件是否失败,我都想为该实体插入记录。当实时插件/工作流失败时,所有发生的数据操作都会回滚,因此任何插入的 Trace 记录也会回滚。

我知道我可以使用 ITracingService,但是很多时候最终用户不愿意/无法在发生错误时将问题转告给我。

有没有人知道在事务之外插入跟踪记录的受支持方法,因此无论代码成功还是失败,它们都可用?

最佳答案

如果您使用的是 Dynamics CRM Online(现在从 Spring 更新开始支持此功能。)它运行良好,并会在 1 天后自动清除日志。

对于本地,您必须在执行事务之外编写它们。因此,您有几个不同的选择:

  • 使用存储的凭据创建到 Dynamics CRM 的新连接(将它们存储在自定义实体或插件步骤的不安全或安全配置字符串中(建议您加密密码,无论选择哪个选项。)
  • 使用诸如 NLog(或 Log4Net)之类的工具并像任何其他 .NET 应用程序一样记录日志(因为在线和沙箱不是限制。)
  • 推出您自己的自定义日志记录解决方案并写入磁盘或网络服务。使其实现 ITracingService (它只有一种简单的方法)并且可以在您可能使用 CRM 跟踪实现的任何地方使用。您可以在此处查看我的快速实现(用于不同目的):https://stackoverflow.com/a/28186429/394978 .您仍然需要实现写入磁盘/webservice/sql。顺便说一句,让它写入网络服务,从技术上讲,它仍然可以在 CRM Online 中工作。
  • 关于c# - 如何在 Dynamics CRM 中的插件事务之外执行操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30808267/

    相关文章:

    c# - 编译我的程序时出现此错误。运算符 "+ "不能应用于 "System.Random"和 "System.Random"的操作数

    c# - 我们可以取消发给 sql server 的查询吗?

    javascript - 动态客户关系管理。子网格中完全自定义的 FetchXml

    azure - ADAL 身份验证无对话框提示

    c# - 从 CRM 插件中的 OptionSetValue 获取字符串值

    c# - 如何使用CRM 2011/2013 sdk查询特定于实体的权限(没有实体记录的ID)?

    c# - 来自编辑器脚本的 Gizmo

    javascript - 如何在 Microsoft Dynamics 中设置事件实体的默认类型?

    javascript - 如何将参数发送给不是常量的 JavaScript 方法?

    c# - 计算水平偏移以将 ListView 滚动到 SelectedItem 的中心