public async Task WriteResultToResponse(IDictionary<string, object> environment, object @object, ContentNegotiatorResult result)
 {
     var stream = new MemoryStream();
     await result.Formatter.WriteToStreamAsync(@object.GetType(), @object, stream, null, null);
     var responseHeaders = environment["owin.ResponseHeaders"] as IDictionary<string, string[]>;
     responseHeaders.Add("content-type", new[] { result.MediaType });
     stream.Position = 0;
     var response = environment["owin.ResponseBody"] as Stream;
     await stream.CopyToAsync(response);
 }
        private ContentNegotiatorResult GetContentTypeFormatter(Type type, IDictionary<string, string[]> headers, IEnumerable<MediaTypeFormatter> formatters)
        {
            ContentNegotiatorResult result = null;
            var contentTypeHeader = headers.Where(h => string.Equals(h.Key, "content-type", StringComparison.OrdinalIgnoreCase));
            var jsonFormatter = formatters.FirstOrDefault(f => f is JsonMediaTypeFormatter);
            var xmlFormatter = formatters.FirstOrDefault(f => f is XmlMediaTypeFormatter);

            if (contentTypeHeader.Any() && contentTypeHeader.First().Value.Any(v => v.Equals(JsonMimeType, StringComparison.OrdinalIgnoreCase)) && jsonFormatter != null)//Has json content-type
                result = new ContentNegotiatorResult(jsonFormatter, JsonMimeType);
            else if (contentTypeHeader.Any() && contentTypeHeader.First().Value.Any(v => XmlMimeTypes.FirstOrDefault(xml => v.Equals(xml, StringComparison.OrdinalIgnoreCase)) != null))//Has xml content-type
                result = new ContentNegotiatorResult(xmlFormatter, XmlMimeTypes.First());
            return result;
        }