Compartir a través de


Ejemplo: Acceso web desde un complemento

En este ejemplo se muestra cómo escribir un complemento que tiene acceso a recursos en la red (web) como un servicio web o fuente. También demuestra cómo limitar la duración de tiempo permitida para esta llamada.

Cómo ejecutar esta muestra

  1. Descargar o clonar el informe de Muestras para que tenga una copia local. Este ejemplo se encuentra en PowerApps-Samples-master\dataverse\orgsvc\C#\WebAccessPlugin.
  2. Abra la solución de ejemplo en Visual Studio, vaya a las propiedades del proyecto y compruebe que el ensamblado se firmará durante la compilación. Presione la F6 para compilar el ensamblado del ejemplo (WebAccessPlugin.dll).
  3. Ejecute la herramienta de registro de complementos y registre el ensamblado en el espacio aislado y la base de datos del servidor de Microsoft Dataverse.
  4. Al registrar un paso, especifique una cadena de URI web (es decir, https://www.microsoft.com) en la columna de configuración no segura.
    • Si no se proporciona un valor, se usará el predeterminado https://www.bing.com.
  5. Utilice una aplicación o escriba código para realizar la operación adecuada para invocar el mensaje y la solicitud de tabla en los que registró el complemento.
  6. Cuando el complemento se ejecuta, si la duración de la llamada supera el límite de 15 segundos, lanzará un error. En caso contrario deberá tener éxito.
  7. Cuando haya terminado la prueba, deshaga el registro del ensamblado y avance con la herramienta Registros de complementos.

Qué hace este ejemplo

Cuando se ejecuta, el complemento descarga los datos de la página web de la dirección de servicio web especificada (o la dirección predeterminada). Si la solicitud excede el límite de 15 segundos, arrojará una InvalidPluginExecutionException y escriba los detalles en el registro de seguimiento del complemento.

  • Si el complemento de HttpClientPlugin falla, escribirá algo como lo siguiente en el registro de seguimiento del complemento:

    Downloading the target URI: https://www.bing.com
    Inner Exceptions:
      Exception: System.Threading.Tasks.TaskCanceledException: A task was canceled.
    Exception: Microsoft.Xrm.Sdk.InvalidPluginExecutionException: An exception occurred while attempting to issue the request.
       at PowerApps.Samples.HttpClientPlugin.Execute(IServiceProvider serviceProvider)
    

    TaskCanceledException es un tanto ambiguo sobre la causa de la tarea que es cancelada. Para obtener una solución más completa que muestre cómo detectar explícitamente errores debidos tiempos de temporización, vea esta entrada de blog: Mejor control de tiempos de espera con HttpClient.

Cómo funciona esta muestra

Para simular el escenario descrito en Qué hace este ejemplo, el ejemplo hará lo siguiente:

Configurar

  1. Comprueba el parámetro de configuración insegura del constructor para un valor de dirección web; de lo contrario, se utiliza el valor predeterminado.
  2. La clase HttpClient Class es utilizada por el método Execute del complemento para descargar datos de páginas web.
  3. Si la llamada excede la duración de 15 segundos especificada, se produce una InvalidPluginExecutionException y los detalles sobre el error se escribirán en el registro de seguimiento del complemento.

Demostración

Complemento HttpClientPlugin

  1. Utiliza la Clase HttpClient y establece la Propiedad Timeout para limitar el tiempo permitido para que la operación se complete.
  2. Captura la Clase AggregateException esperada y examina las excepciones internas para la TaskCanceledException esperada

Vea también

Acceso a recursos web externos
Registro de un complemento