Need to override the public url of Azure Blob Storage

Topics: Core, Customizing Orchard
Developer
Feb 1, 2014 at 4:10 PM
Edited Feb 1, 2014 at 4:12 PM
Up until recently, we were using Azure Blob Storage with a custom domain as a CDN for our images and media with an Orchard.Azure.Media.StorageConnectionString defined as
DefaultEndpointsProtocol=https;BlobEndpoint=http://cdn.somewebsite.com;AccountName=[accountName];AccountKey=[accountKey]
What we've recently learned is that Azure Blob Storage has a connection limit and under load the response time starts to drop.

If you call up Azure, you can get access to the old (and buggy) Azure CDN.

Using the old Azure CDN solution we are able to use Azure Blob storage as the write endpoint for orchard, and Azure CDN will replicate the container and handle public access. In order for this to work, the custom domain points to the Azure CDN server instead of Azure Blob Storage. With a Orchard.Azure.Media.StorageConnectionString defined as.
DefaultEndpointsProtocol=https;AccountName=[accountName];AccountKey=[accountKey]
Which causes orchard to Public Urls to Azure Blob storage directly (http://accountName.blob.core.windows.net/).

When I need orchard to write to Blob Storage, but use http://cdn.somewebsite.com as the Public Url.

I've already created an issue for this problem Issue 20384, and I drafted a fix for myself in the old Media module since I was not yet using the new Media Library Old Pull Request.

Piedone commented that this should be configured in Settings.txt. Cool I agree.

I am ready to move to the new Media Library, and I this is what I had to do to get the same functionality. I'm not completely a fan of what I've done, so I'm open to suggestions.

New Pull Request