WebJob SDK no funciona cuando se ejecuta en una aplicación de Service Fabric

Quiero usar el SDK de WebJob en un servicio sin estado que se ejecuta como una aplicación de Service Fabric. Lamentablemente, no puedo hacer que funcione correctamente. A continuación se incluye parte de un código de prueba que reproduce el problema. El "ProcessMethod" nunca se invoca. La función activada "ProcessNotificationsInQueue" tampoco se ejecuta nunca (sí, hay elementos en la cola). El "Estado de mantenimiento" de la aplicación se establece en "Error" en el Service Fabric Explorer aunque la aplicación aún se está ejecutando.

DashboardConnectionString y StorageConnectionString tienen los valores correctos.

No veo ningún problema con un código muy similar cuando se ejecuta en una aplicación de consola o una WorkerRole.

¿Me estoy perdiendo de algo? ¿Alguien ha utilizado ya el SDK de WebJob con éxito en una aplicación de Service Fabric?

public sealed class TestStatelessService : StatelessService
{
    public TestStatelessService(StatelessServiceContext context)
        : base(context)
    { }

    /// <summary>
    /// Optional override to create listeners (e.g., TCP, HTTP) for this service replica to handle client or user requests.
    /// </summary>
    /// <returns>A collection of listeners.</returns>
    protected override IEnumerable<ServiceInstanceListener> CreateServiceInstanceListeners()
    {
        return new ServiceInstanceListener[0];
    }

    /// <summary>
    /// This is the main entry point for your service instance.
    /// </summary>
    /// <param name="cancellationToken">Canceled when Service Fabric needs to shut down this service instance.</param>
    protected override async Task RunAsync(CancellationToken cancellationToken)
    {
        ConfigurationPackage configPackage = this.Context.CodePackageActivationContext.GetConfigurationPackageObject("Config");
        KeyedCollection<string, ConfigurationProperty> parameters = configPackage.Settings.Sections["MyConfigSection"].Parameters;

        JobHostConfiguration config = new JobHostConfiguration();
        config.DashboardConnectionString = parameters["AzureWebJobsDashboard"].Value;
        config.StorageConnectionString = parameters["AzureWebJobsStorage"].Value;
        config.Queues.BatchSize = 10;
        config.Queues.MaxDequeueCount = 8;
        config.Queues.MaxPollingInterval = TimeSpan.FromSeconds(30);
        var host = new JobHost(config);
        host.CallAsync(typeof(TestStatelessService).GetMethod("ProcessMethod"), cancellationToken);
        host.RunAndBlock();
    }

    [NoAutomaticTrigger]
    public async Task ProcessMethod(CancellationToken cancellationToken)
    {
        long iterations = 0;
        while (true)
        {
            cancellationToken.ThrowIfCancellationRequested();

            ServiceEventSource.Current.ServiceMessage(this, "Working-{0}", ++iterations);

            await Task.Delay(TimeSpan.FromSeconds(1), cancellationToken);
        }
    }

    [Timeout("00:03:00")]
    public static void ProcessNotificationsInQueue([QueueTrigger("newnotificationqueue")] Notification notification)
    {
       //Do something 
    }
}

Respuestas a la pregunta(1)

Su respuesta a la pregunta