Ram Kumar K
Mar 24, 2018
visibility 13221
star star star star star
(2 votes)

Using Azure Cloud for Storing Episerver CMS Blobs

Using Azure Cloud for Storing Episerver CMS Blobs -

Working with multiple developers in the Episerver Environment requires sharing Blobs.  One of the best options our team agreed on was using Free Azure account to do a POC. 

The following would help you to set-up storage account in Azure and use that as a default blob provider for your Episerver project.

  • Create a storage account by using the Azure portal
  • Create a Resource, Resource Group & Storage Account
  • Create Container and Get Access keys
  • Install Azure Packages in Episerver
  • Transfer files using  AzCopy 

1) Create a storage account by using the Azure portal

Login to Azure Site using the following Link

https://portal.azure.com/

Image Azure_1.png

2) Create a Resource, Resource Group & Storage Account

Resource:  A manageable item that is available through Azure.  EX: Storage account, Web app, Database, VM

Resource Group: A container that holds related resources for an Azure solution.

Storage Account: A general-purpose storage account provides access to all of the Azure Storage services: blobs, files, queues, and tables.

Image Azure_2.PNG

2) Resource Group:

Image Azure_REsource_Group2.png

2) Storage Account 

Image Azure_Storage_Account2.png

3)Create Container and Get Access keys

After creating the storage account, you can add a container and get keys for the storage account to access them in Episerver CMS. The connectionstring info is used to connect the Azure storage.

Image Azure_Storage_Container2.png

Image Azure_Storage_Container_Access2.png

4) Install Azure Packages in Episerver CMS Project.

Add EPiServer Azure Nuget Package

Image Episerver_Azure_Nuget.PNG

4) Add  the following in in web.config

Change Blob provider : "mycontainer" is name of your Azure Blob Storage Container

 <blob defaultProvider="azureblobs">
      <providers>
        <add name="azureblobs" type="EPiServer.Azure.Blobs.AzureBlobProvider,EPiServer.Azure"
              connectionStringName="EPiServerAzureBlobs" container="mycontainer"/>
      </providers>
    </blob>

Add connection string
<connectionStrings>
    <add name="EPiServerAzureBlobs" connectionString="DefaultEndpointsProtocol=https;AccountName=myaccount;AccountKey=abcdefghij" />
  </connectionStrings>


5) Upload/Transfer blobs using AzCopy

  • AzCopy is a command-line utility designed for copying data to/from Microsoft Azure Blob
  • AzCopy /Source:C:\myfolder /Dest:https://myaccount.blob.core.windows.net/mycontainer /DestKey:key /S
  • Image AZure_copy.png

That's it. Run the website and You are using Azure storage for blobs. This would help your team in the multi-developer environment and remote development as well.

This POC was done using free VS subscription and we have moved to Gov Cloud now.

Reference: Azure Quick Start 

Mar 24, 2018

Comments

Drew Null
Drew Null Jun 3, 2018 05:10 AM

Thanks for the write-up, Ram. I like to use Azure for my development environment too. 

A few things I would add: 

  • The element mentioned above goes in the element
  • If you're using Commerce, be sure to install the Episerver.Commerce.Azure NuGet package to both your CMS and Commerce Manager projects
  • Keep your CMS and CM connection strings and elements in sync
  • Comment out the element unless you are prepared to set that up in Azure too (both CMS and CM)

Thanks!

error Please login to comment.
Latest blogs
Composition Over Inheritance: Why Your Content Contract Is Not a Base Class

Inside the structural conformance pattern in SaaS CMS — from server-side inheritance to pipeline governance. A contract in Optimizely SaaS CMS is...

Vipin Banka | Sep 19, 2026

Optimizely Opti ID Integration: Why the API Key Was Missing from the DXP Management Portal

While working on an Optimizely CMS 12 Opti ID integration recently, we ran into an issue that initially appeared to be related to SSO authenticatio...

Madhu | Sep 18, 2026 |

Extending a Contract: What You Can Override

Contracts share fields across content types — but not every field setting can be overridden. Push the same contract onto several components, and CM...

Chirag Khanna | Sep 18, 2026 |

Building a Blazor Server UI Inside the Optimizely CMS 13 Admin Shell

What I learned shipping a Blazor Server UI inside Optimizely CMS 13 — Razor components in a NuGet package, the Blazor hub next to MapContent(),...

Stanisław Szołkowski | Sep 17, 2026 |