Parse metadata only if it sent as text

Sending metadata as text adds a lot of overhead over the network (due " encoding) and on clientside due manual JSON.parse.
Your controller can simply return the Metadata as json by specifying the contentType header:

i.e. 
[HttpGet]
		public HttpResponseMessage Metadata()
		{
			var result = new HttpResponseMessage { Content = new StringContent(_contextProvider.Metadata())};
			result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
			return result;
        }