Ejecutar WebJobs desde Fiddler o tu aplicación

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:

Publish Web

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:

quick glance - download the publish profile

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:

Website - WebJob - Schedule link

Este nos llevará al servicio Scheduler donde podremos ver todos aquellos WebJobs que estén siendo lanzados de una forma programada:

Scheduler WebJobs

Si accedemos al que aparece en la lista, nos llevará a una sección llamada job action, donde podremos comprobar su configuración:

Scheduler job action

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.

Si no tuvieras ningún WebJob programado, puedes utilizar los recuadros de este post para obtener la cadena en base64, compuesta por userName:userPWD

Llamada desde Fiddler

¡Listo! ya sabemos cómo funcionan las llamadas a los WebJobs. En este ejemplo he utilizado Fiddler para realizar la prueba:

Fiddler calling a WebJob

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

WebJob Recent job runs

Espero que sea de utilidad.

¡Saludos!