public void ProcessRequest(HttpContext context) { if (context == null) { throw new ArgumentNullException("context"); } if (_blobAddress == null) { context.Response.StatusCode = 404; context.Response.ContentType = "text/plain"; context.Response.Write(ResourceManager.GetString("Not_Found_Exception")); return; } var dataAdapterDependencies = new PortalConfigurationDataAdapterDependencies(PortalName, context.Request.RequestContext); CloudStorageAccount storageAccount; if (!TryGetCloudStorageAccount(context, out storageAccount)) { context.Response.StatusCode = 404; context.Response.ContentType = "text/plain"; context.Response.Write(ResourceManager.GetString("Failed_To_Configure_Cloud_Storage_Account")); return; } if (_enableTracking) { var log = new Entity("adx_webfilelog"); log["adx_name"] = _blobAddress; log["adx_date"] = DateTime.UtcNow; log["adx_ipaddress"] = context.Request.UserHostAddress; log["adx_webfileid"] = _entity; var user = dataAdapterDependencies.GetPortalUser(); if (user != null && user.LogicalName == "contact") { log["adx_contactid"] = user; } var serviceContext = dataAdapterDependencies.GetServiceContextForWrite(); serviceContext.AddObject(log); serviceContext.SaveChanges(); } var blobClient = storageAccount.CreateCloudBlobClient(); var blob = blobClient.GetBlobReferenceFromServer(new Uri(_blobAddress)); var accessSignature = blob.GetSharedAccessSignature(new SharedAccessBlobPolicy { Permissions = SharedAccessBlobPermissions.Read, SharedAccessExpiryTime = DateTime.UtcNow.AddMinutes(55) }); context.Response.Redirect(blob.Uri + accessSignature); }