/// <param name='operations'>
 /// Reference to the KeyVaultClient.ISecretOperations.
 /// </param>
 /// <param name='secretName'>
 /// Required.
 /// </param>
 /// <param name='secret'>
 /// Required.
 /// </param>
 public static Secret CreateSecret(this ISecretOperations operations, string secretName, Secret secret)
 {
     return Task.Factory.StartNew((object s) => 
     {
         return ((ISecretOperations)s).CreateSecretAsync(secretName, secret);
     }
     , operations, CancellationToken.None, TaskCreationOptions.None, TaskScheduler.Default).Unwrap().GetAwaiter().GetResult();
 }
        // Please set the following connection strings in app.config for this WebJob to run:
        // AzureWebJobsDashboard and AzureWebJobsStorage
        static void Main()
        {
            var client = new KeyVault(new Uri(CloudConfigurationManager.GetSetting("KeyVault")));

            var jobStorage = client.Secret.GetSecretByName("JobStorage");
            var sb = client.Secret.GetSecretByName("ServiceBus");

            if (jobStorage.Value != CloudConfigurationManager.GetSetting("JobStorage"))
            {
                jobStorage = new Secret()
                {
                    ContentType = "String",
                    Name = "JobStorage",
                    Value = CloudConfigurationManager.GetSetting("JobStorage")
                };

                jobStorage = client.Secret.CreateSecret("JobStorage", jobStorage);
            }

            if (sb.Value != CloudConfigurationManager.GetSetting("ServiceBus"))
            {
                sb = new Secret()
                {
                    ContentType = "String",
                    Name = "ServiceBus",
                    Value = CloudConfigurationManager.GetSetting("ServiceBus")
                };

                sb = client.Secret.CreateSecret("ServiceBus", sb);
            }

            var jobStorageConnString = jobStorage.Value;

            var host = new JobHost(new JobHostConfiguration(jobStorageConnString));

            host.Start();

            Console.WriteLine("Bootstrapped");

            host.Stop();
        }
 /// <param name='operations'>
 /// Reference to the KeyVaultClient.ISecretOperations.
 /// </param>
 /// <param name='secretName'>
 /// Required.
 /// </param>
 /// <param name='secret'>
 /// Required.
 /// </param>
 /// <param name='cancellationToken'>
 /// Cancellation token.
 /// </param>
 public static async Task<Secret> CreateSecretAsync(this ISecretOperations operations, string secretName, Secret secret, CancellationToken cancellationToken = default(System.Threading.CancellationToken))
 {
     Microsoft.Rest.HttpOperationResponse<KeyVaultClient.Models.Secret> result = await operations.CreateSecretWithOperationResponseAsync(secretName, secret, cancellationToken).ConfigureAwait(false);
     return result.Body;
 }