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);
        }