【问题标题】:Exception Handling in Dynamics CRM SDKDynamics CRM SDK 中的异常处理
【发布时间】:2017-05-04 16:39:20
【问题描述】:

我目前正在开发一个简单的 Dynamics CRM 应用程序,它允许用户创建新的实体记录。

因此,当发生错误时,我得到了完整的堆栈,但我想知道是否可以获得导致该错误的属性名称。

【问题讨论】:

  • 我刚刚从 C# 创建了一些事件,我的异常特别告诉我哪个属性有问题。我正在使用 VS 2017 并在调试时简单地在事件窗口中选择了异常。例如 Microsoft.Xrm.Sdk.dll 中的 System.ServiceModel.FaultException('incident' 实体不包含 Name = 'new_backupState' 的属性)
  • 这真的取决于你得到的具体错误。正如@DavidYenglin 所示,这当然是可能的,但并非在所有情况下都是如此。通常这取决于平台是抛出错误还是插件抛出错误。您看到哪些不提供属性名称的属性异常?另外,请告知我们 CRM 的版本以及它是在线的还是本地的。

标签: c# exception dynamics-crm


【解决方案1】:

如果您想避免针对已知 CRM 平台错误发出完整的堆栈跟踪,您可以捕获 FaultException<OrganizationServiceFault> 类型的错误并以适当的方式处理它们,如下所示:

try
{
    service.Create(entity);
}
catch (FaultException<OrganizationServiceFault> ex)
{
   switch (ex.Detail.ErrorCode)
   {
       case 0x80041103: // QueryBuilderNoAttribute
          Console.WriteLine(ex.Detail.Message);
          // Specific error handling goes here...
          return;

       default:
          throw;
   }
}

平台错误代码已记录在案,可在 MSDN 上查找。

【讨论】:

    【解决方案2】:

    我们可以抛出异常并显示消息。

    throw new InvalidPluginExecutionException("Message here....");

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-19
      • 2020-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多