En varias ocasiones he hablado de los WebJobs, asociados a Microsoft Azure Websites, y cómo es posible convertir una aplicación de consola utilizando este servicio e incluso lanzar acciones dentro de WebJobs mediante queues o blobs. En esta ocasión quería mostrar cómo es posible ejecutar un WebJob desde Fiddler o incluso desde nuestra propia aplicación.
Descargar el perfil de publicación
Para poder llamar a un WebJob es necesario estar autenticados pero ¿con qué credenciales? Con las del perfil de publicación. Cuando utilizamos Web Deploy, y tenemos asociado nuestro Visual Studio a una cuenta de Microsoft Azure, este es un paso transparente para nosotros. El propio IDE descarga un archivo XML, el cual nos completa la información de despliegue:
Para poder descargar dicho archivo basta con seleccionar el sitio web donde queremos alojar el WebJob y hacer clic sobre la opción Download the publish profile del apartado quick glance:
Este archivo contiene tanto las credenciales de despliegue como de publicación (Web Deploy y FTP). Para este post, los valores que debemos copiar son: userName (sin el nombre del sitio) y el hash de la password, almacenado en userPWD.
Obtener la URL de llamada al WebJob
El siguiente paso es saber a dónde tenemos que llamar para poder ejecutar el WebJob. Si bien no está lo suficientemente visible, existe una URL por cada WebJob que creamos. La misma se compone de https://SITE_NAME.scm.azurewebsites.net/api/triggeredwebjobs/NOMBRE_DEL_JOB/run. Sólo cuando creamos uno de tipo programado podemos acceder a esta información, haciendo clic sobre el enlace Schedule del WebJob:
Este nos llevará al servicio Scheduler donde podremos ver todos aquellos WebJobs que estén siendo lanzados de una forma programada:
Si accedemos al que aparece en la lista, nos llevará a una sección llamada job action, donde podremos comprobar su configuración:
El servicio Scheduler está realizando una llamada POST a la URL mencionada anteriormente, con las cabeceras Authorization, donde se incluyen las credenciales del perfil de publicación, y Content-Type usando text/plain.
Llamada desde Fiddler
¡Listo! ya sabemos cómo funcionan las llamadas a los WebJobs. En este ejemplo he utilizado Fiddler para realizar la prueba:
El resultado de esta acción debería ser un 202 (Accepted). Además, podemos comprobar los logs del WebJob en la siguiente URL: https://SITE_NAME.scm.azurewebsites.net/azurejobs/#/jobs/triggered/WEBJOB_NAME
Espero que sea de utilidad.
¡Saludos!