public static void GenerateThumbnail( [QueueTrigger("thumbnailrequest")] BlobInformation blobInfo, [Blob("images/{BlobName}", FileAccess.Read)] Stream input, [Blob("images/{BlobNameWithoutExtension}_thumbnail.jpg")] CloudBlockBlob outputBlob) { using (Stream output = outputBlob.OpenWrite()) { ConvertImageToThumbnailJPG(input, output); outputBlob.Properties.ContentType = "image/jpeg"; } // Entity Framework context class is not thread-safe, so it must // be instantiated and disposed within the function. using (ContosoAdsContext db = new ContosoAdsContext()) { var id = blobInfo.AdId; Ad ad = db.Ads.Find(id); if (ad == null) { throw new Exception(String.Format("AdId {0} not found, can't create thumbnail", id.ToString())); } ad.ThumbnailURL = outputBlob.Uri.ToString(); db.SaveChanges(); } }
// A production app would also include an OnStop override to provide for // graceful shut-downs of worker-role VMs. See // http://azure.microsoft.com/en-us/documentation/articles/cloud-services-dotnet-multi-tier-app-storage-3-web-role/#restarts public override bool OnStart() { // Set the maximum number of concurrent connections. ServicePointManager.DefaultConnectionLimit = 12; // Read database connection string and open database. var dbConnString = CloudConfigurationManager.GetSetting("ContosoAdsDbConnectionString"); db = new ContosoAdsContext(dbConnString); // Open storage account using credentials from .cscfg file. var storageAccount = CloudStorageAccount.Parse (RoleEnvironment.GetConfigurationSettingValue("StorageConnectionString")); Trace.TraceInformation("Creating images blob container"); var blobClient = storageAccount.CreateCloudBlobClient(); imagesBlobContainer = blobClient.GetContainerReference("images"); if (imagesBlobContainer.CreateIfNotExists()) { // Enable public access on the newly created "images" container. imagesBlobContainer.SetPermissions( new BlobContainerPermissions { PublicAccess = BlobContainerPublicAccessType.Blob }); } Trace.TraceInformation("Creating images queue"); CloudQueueClient queueClient = storageAccount.CreateCloudQueueClient(); imagesQueue = queueClient.GetQueueReference("images"); imagesQueue.CreateIfNotExists(); timestampQueue = queueClient.GetQueueReference("timestamp"); timestampQueue.CreateIfNotExists(); Trace.TraceInformation("Storage initialized"); return(base.OnStart()); }
public AdController() { InitializeStorage(); db = new ContosoAdsContext(RoleEnvironment.GetConfigurationSettingValue(MvcApplication.AdsConnectionKey)); }