top of page
  • Foto del escritorAlejandro Caravantes Molina

Debug de Custom API en Dataverse



¡Vamos con un nuevo post, después de un breve parón por causas mayores!. Hace ya algunas semanas vimos qué era eso de las Custom API y en una segunda entrada vimos cómo crear respuestas de Custom API customizadas. Hoy vamos a traer algo cortito relacionado con las Custom API pero no por ello menos importante. Vamos a ver cómo depurar el código de la API que hemos creado que siendo sinceros... ¿Quién es el guapo/a que escribe código que se ejecuta y funciona a la primera sin necesidad de depurarlo?


Vamos al meollo. Si ya has leído los dos post a los que hago referencia mas arriba, fenomenal. Si no, te recomiendo que los leas ahora ya que vamos a realizar pasos que seguíamos en estos post y que no vamos a repetir en este 😜.


Crea una nueva Custom API desde la solución en la que estés trabajando e introduce toda la información necesaria en cada uno de los campos que nos pide Power Platform. Pero... ¡Espera!

Fíjate en el campo con nombre: Allowed Custom Processing Step Type. Establece el valor Sync and Async de este campo.


Si recuerdas el ejemplo que seguíamos en los otros post donde consultábamos un registro de tipo Environment dado un identificador de entorno en la request de la llamada a la API, esta vez seguimos con el mismo ejemplo y lo único que cambia a la hora de crear la API customizada es el valor del campo que comento mas arriba.

Cuando termines de crear la API customizada, debe quedar algo parecido a lo que aparece en esta imagen.

Por último, cuando hayas guardado la API, crea un Request Parameter y un Response Parameter, registra la libería de clases que se va a ejecutar cuando se invoque tu API desde Plugin Registration Tool y ya como paso final publica las personalizaciones de tu solución.


Fíjate que lo único nuevo que hemos hecho hasta ahora respecto a lo que contaba en las dos entradas de las Custom API es establecer el valor del campo Is Function a No (ojo que esto conlleva que la API deba ser invocada vía POST) y el valor Sync and Async en el campo Allowed Customo Processing Step Type. Pero como bien digo... hasta ahora.


Vete de vuelta a Plugin Registration Tool, y registra un nuevo Step en el assembly que has registrado antes.

En los detalles del nuevo Step en el campo Message introduce el nombre interno de la API que acabas de crear un poco mas arriba.

El paso que estás registrando, se ejecutará cuando llegue una request cuyo MessageName sea idéntico al nombre interno de la Custom API. Configura también la etapa en la que se va a ejecutar este nuevo paso asi como el modo de ejecución. Yo lo he configurado como puedes ver en la siguiente imagen:


Como paso previo a la depuración asegúrate de que has instalado el Plugin Profiler. Esto lo puedes comprobar desde Plugin Registrarion Tool. Si no lo has instalado aún, en la barra de comandos aparecerá la opción Install Profiler. Puede tardar un ratito... Si ya lo has instalado, puedes omitir este paso y pasar al siguiente:


Cuando haya terminado la instalación, dirigete al Step que has registrado un poco mas arriba, haz clic sobre el botón derecho del ratón y selecciona Start Profiling. Deja la ventana emergente que aparece tal y como está y haz clic en OK. Si todo ha ido bien, se habrá añadido el sufijo "(Profiled)" al Step que has registrado.


Ya está todo listo. Ahora lo único que tenemos que hacer es ir a Postman e invocar nuestra API. Mientras tengamos el Profiling activado, lo que está haciendo Dataverse por debajo es guardar un registro por cada request que llega a nuestra API. De esta forma y utilizando Plugin Registration Tool podemos seleccionar una request en concreto y depurarla en Visual Studio. ¿Cómo?. Vamos a ello.


Primero de todo asegurate que la versión del código que vas a depurar y la versión de la librería de clases publicada en Dataverse son las mismas. De lo contrario, no va a funcionar lo que vamos a hacer y necesitarás recompilar la librería de clases y actualizarla desde Plugin Registration Tool.


Selecciona el Step y haz clic en la opción Debug de la barra de comandos. A continuación haz clic en el bóton que aparece a la derecha del campo Profile en la pestaña Setup. Si todo ha ido bien, debería mostrar una nueva ventana emergente donde veas todas las request que has hecho a tu API vía Postman y que el Profiler ha ido registrando.


Selecciona la request que quieras depurar, y acto seguido debes indicar la ruta de la librería de clases compilada que se va a ejecutar simulando que entra la request que has seleccionado.


Antes de hacer clic en el botón Start Execution, debes asociar el depurador de Visual Studio a Plugin Registration Tool. Ve a Visual Studio, selecciona el menú Depurar y a continuación la opción Asociar al depurador... Ahí busca el proceso que te indica el propio Plugin Registration Tool y selecciona Asociar. Si todo ha ido bien, cuando hagas clic en el boton Start Execution de Plugin Registration Tool, verás como se activa el punto de interrupción que has colocado en tu código y 💥voilá💥

Obtén el objeto context del Service Provider y fíjate que toda la información relacionada con la request viene en este objeto.


Espero que este post haya sido de tu interés. ¡¡Hasta la siguiente!!

Comments


bottom of page