Partekatu honen bidez:


Administrar las excepciones en su código

 

Publicado: enero de 2017

Se aplica a: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online

Existe un número de excepciones que se pueden obtener de una llamada de método de servicio web Microsoft Dynamics 365. El diseño de su aplicación debe respetar y manejar de manera adecuada estas excepciones. En SDK de Microsoft Dynamics 365, todas las llamadas al método de servicio web usan un canal de comunicaciones al servidor basado en la tecnología Windows Communication Foundation (WCF). En términos de WCF, las excepciones obtenidas del canal reciben el nombre de errores.

En este tema

Excepciones y errores comunes

Errores personalizados de reglas de negocio

Información adicional acerca de excepciones

Excepciones y errores comunes

El siguiente código se usa en la mayoría de muestras de SDK de Microsoft Dynamics 365. Resalta los errores y las excepciones comunes que debe manejar el diseño de su aplicación.


catch (FaultException<Microsoft.Xrm.Sdk.OrganizationServiceFault> ex)
{
    Console.WriteLine("The application terminated with an error.");
    Console.WriteLine("Timestamp: {0}", ex.Detail.Timestamp);
    Console.WriteLine("Code: {0}", ex.Detail.ErrorCode);
    Console.WriteLine("Message: {0}", ex.Detail.Message);
    Console.WriteLine("Inner Fault: {0}",
        null == ex.Detail.InnerFault ? "No Inner Fault" : "Has Inner Fault");
}
catch (System.TimeoutException ex)
{
    Console.WriteLine("The application terminated with an error.");
    Console.WriteLine("Message: {0}", ex.Message);
    Console.WriteLine("Stack Trace: {0}", ex.StackTrace);
    Console.WriteLine("Inner Fault: {0}",
        null == ex.InnerException.Message ? "No Inner Fault" : ex.InnerException.Message);
}
catch (System.Exception ex)
{
    Console.WriteLine("The application terminated with an error.");
    Console.WriteLine(ex.Message);

    // Display the details of the inner exception.
    if (ex.InnerException != null)
    {
        Console.WriteLine(ex.InnerException.Message);

        FaultException<Microsoft.Xrm.Sdk.OrganizationServiceFault> fe = ex.InnerException
            as FaultException<Microsoft.Xrm.Sdk.OrganizationServiceFault>;
        if (fe != null)
        {
            Console.WriteLine("Timestamp: {0}", fe.Detail.Timestamp);
            Console.WriteLine("Code: {0}", fe.Detail.ErrorCode);
            Console.WriteLine("Message: {0}", fe.Detail.Message);
            Console.WriteLine("Trace: {0}", fe.Detail.TraceText);
            Console.WriteLine("Inner Fault: {0}",
                null == fe.Detail.InnerFault ? "No Inner Fault" : "Has Inner Fault");
        }
    }
}

Nota

Si está accediendo al servicio web de detección, su código deberá obtener DiscoveryServiceFault en lugar del fallo OrganizationServiceFault mostrado anteriormente.

Además de estas excepciones y errores, el código debe administrar las siguientes excepciones:

Al conectarse a Microsoft Dynamics 365 (online), es posible que se muestre una excepción SecurityAccessDeniedException si utiliza un Cuenta de Microsoft válido y su cuenta no está asociada con ninguna organización Microsoft Dynamics 365 (online). Se puede mostrar una MessageSecurityException si su Cuenta de Microsoft no es válido o se produjo un error de autenticación.

Errores personalizados de reglas de negocio

Con Microsoft Dynamics 365 y Microsoft Dynamics 365 (online), los personalizadores pueden crear reglas de negocio que se evalúan en el servidor. Los personalizadores pueden lanzar mensajes de error según las condiciones fijadas en la regla de negocio. Los programadores deben asegurarse de incluir un control de errores sólido en el código para obtener y resolver estas excepciones.

Lo siguiente es un ejemplo del registro de seguimiento producido cuando uno de estos errores se devuelve desde una regla de negocio llamada "Name of Entity Scope Business Rule returning Error" y el mensaje de error es "custom error message".

Unhandled Exception: System.ServiceModel.FaultException`1[[Microsoft.Xrm.Sdk.OrganizationServiceFault, Microsoft.Xrm.Sdk, Version=7.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]: custom error messageDetail: 
<OrganizationServiceFault xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="https://schemas.microsoft.com/xrm/2011/Contracts">
  <ErrorCode>-2147220891</ErrorCode>
  <ErrorDetails xmlns:d2p1="http://schemas.datacontract.org/2004/07/System.Collections.Generic">
    <KeyValuePairOfstringanyType>
      <d2p1:key>OperationStatus</d2p1:key>
      <d2p1:value xmlns:d4p1="http://www.w3.org/2001/XMLSchema" i:type="d4p1:string">0</d2p1:value>
    </KeyValuePairOfstringanyType>
    <KeyValuePairOfstringanyType>
      <d2p1:key>SubErrorCode</d2p1:key>
      <d2p1:value xmlns:d4p1="http://www.w3.org/2001/XMLSchema" i:type="d4p1:string">-2146233088</d2p1:value>
    </KeyValuePairOfstringanyType>
  </ErrorDetails>
  <Message>custom error message</Message>
  <Timestamp>2014-09-04T17:43:16.8197965Z</Timestamp>
  <InnerFault i:nil="true" />
  <TraceText>

[Microsoft.Crm.ObjectModel: Microsoft.Crm.ObjectModel.SyncWorkflowExecutionPlugin]
[cf6a25a9-5a34-e411-80b9-00155dd8c20f: ]
Starting sync workflow 'Name of Entity Scope Business Rule returning Error', Id: c76a25a9-5a34-e411-80b9-00155dd8c20f
Entering ConditionStep1_step: 
Entering SetMessage_step: 
Sync workflow 'Name of Entity Scope Business Rule returning Error' terminated with error 'custom error message'

</TraceText>
</OrganizationServiceFault>

Más información:TechNet: Crear y editar reglas de negocio.

Información adicional acerca de excepciones

Cuando se genera una excepción no detectada que contiene información confidencial que el usuario no tiene permiso para ver, la información confidencial de la excepción se oculta al usuario y se proporciona un número de referencia. Este número de referencia hace referencia a la entrada del registro de evento de servidor relacionado y a la entrada de seguimiento del servidor. El administrador del sistema puede buscar estas entradas y buscar más información sobre la excepción.

Ver también

Solución de problemas y control de errores
Sugerencias para la solución de problemas
Web service error codes
Administrar las excepciones en complementos
Centro para desarrolladores .NET Framework

Microsoft Dynamics 365

© 2017 Microsoft. Todos los derechos reservados. Copyright