Skip to main content

Automated Backup - Windows Azure Web Sites

We have a new feature available for Windows Azure Web Sites – we can create backups automatically of our site and database that can be used later on.
To be able to use this feature, you will need to change the web site mode from free to standard. Only for standard web sites this feature is available. When you are in the standard mode you have multiple instance sizes and you can scale your site automatically.
From the cost perspective you should know that there are no additional cost to it (automatically backup feature). You only pay the space used by the backup on the storage. This is a nice think, we have another nice service that is free.
When we activate the automated backup feature we will need to specify the storage account where we want to make the backup and what is the frequency. In this moment we can specify only in days the frequency, but I don’t see this a real problem. In normal cases, you don’t want to make a backup every 5 minutes. Beside this, you can specify the time when the backup is made. In general we prefer to make the backup during the night, but based on your client location, night can mean 03:00 UTC or 14:00 UTC.
A nice feature available is the ability to include not only the site but the database that is used by your site. In general, the most important information can be found in the database. This is the place where data is changing very offer and you don’t want to lose it.
Any database that is linked to your site can be backup. What is nice is that you can create a backup for not only SQL but also for MySQL.
Once you configure all this, the last thing that you need to do is to hit “Save” button. And wait, we have something more. You can trigger the backup manually. To use manual backup feature you don’t need to activate the automated backup, you only need to configure what is backup and where.
The most complicated step is the restoring (or not). From the same tab we can navigate to the restore action that give us the ability to restore the web site and database from our storage account or from a file that is on another storage account.
I would recommend this feature especially for the database backup and how easily you can restore your web site. Please be aware, don’t use this feature if you write in the web site directory pictures or data uploaded by the clients. In this case you should store the data directly to Windows Azure Storage Blobs.


Popular posts from this blog

ADO.NET provider with invariant name 'System.Data.SqlClient' could not be loaded

Today blog post will be started with the following error when running DB tests on the CI machine:
threw exception: System.InvalidOperationException: The Entity Framework provider type 'System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer' registered in the application config file for the ADO.NET provider with invariant name 'System.Data.SqlClient' could not be loaded. Make sure that the assembly-qualified name is used and that the assembly is available to the running application. See for more information. at System.Data.Entity.Infrastructure.DependencyResolution.ProviderServicesFactory.GetInstance(String providerTypeName, String providerInvariantName) This error happened only on the Continuous Integration machine. On the devs machines, everything has fine. The classic problem – on my machine it’s working. The CI has the following configuration:

TeamCity.NET 4.51EF 6.0.2VS2013
It seems that there …

GET call of REST API that contains '/'-slash character in the value of a parameter

Let’s assume that we have the following scenario: I have a public HTTP endpoint and I need to post some content using GET command. One of the parameters contains special characters like “\” and “/”. If the endpoint is an ApiController than you may have problems if you encode the parameter using the http encoder.
using (var httpClient = new HttpClient()) { httpClient.BaseAddress = baseUrl; Task<HttpResponseMessage> response = httpClient.GetAsync(string.Format("api/foo/{0}", "qwert/qwerqwer"))); response.Wait(); response.Result.EnsureSuccessStatusCode(); } One possible solution would be to encode the query parameter using UrlTokenEncode method of HttpServerUtility class and GetBytes method ofUTF8. In this way you would get the array of bytes of the parameter and encode them as a url token.
The following code show to you how you could write the encode and decode methods.

Entity Framework (EF) TransactionScope vs Database.BeginTransaction

In today blog post we will talk a little about a new feature that is available on EF6+ related to Transactions.
Until now, when we had to use transaction we used ‘TransactionScope’. It works great and I would say that is something that is now in our blood.
using (var scope = new TransactionScope(TransactionScopeOption.Required)) { using (SqlConnection conn = new SqlConnection("...")) { conn.Open(); SqlCommand sqlCommand = new SqlCommand(); sqlCommand.Connection = conn; sqlCommand.CommandText = ... sqlCommand.ExecuteNonQuery(); ... } scope.Complete(); } Starting with EF6.0 we have a new way to work with transactions. The new approach is based on Database.BeginTransaction(), Database.Rollback(), Database.Commit(). Yes, no more TransactionScope.
In the followi…