public HttpResponseMessageWrapper(HttpRequestMessage msg, T type, HttpStatusCode statusCode)
            : base(statusCode)
        {
            MessageWrapper <T> messageWrapper = new MessageWrapper <T>()
            {
                StatusCode = statusCode, Value = type
            };

            this.Content = new ObjectContent <MessageWrapper <T> >(messageWrapper);
            if (HttpHeaderHelper.IsPhoneDevice(msg))
            {
                this.StatusCode = HttpStatusCode.OK;
            }

            string messageText = this.Content != null?msg.Content.ReadAsStringAsync().Result : "(empty)";

            string tracemsg = String.Format(
                "\nWeb Response: Status: {0} {1}; Content-Type: {2}\n" +
                "Web Response Body: {3}",
                (int)statusCode,
                statusCode,
                msg.Content.Headers.ContentType,
                messageText);

            TraceLog.TraceLine(tracemsg, TraceLog.LogLevel.Detail);
        }
        public HttpResponseMessageWrapper(HttpRequestMessage msg, HttpStatusCode statusCode)
            : base(statusCode)
        {
            MessageWrapper <T> messageWrapper = new MessageWrapper <T>()
            {
                StatusCode = statusCode
            };

            this.Content = new ObjectContent <MessageWrapper <T> >(messageWrapper);

            if (HttpHeaderHelper.IsPhoneDevice(msg))
            {
                this.StatusCode = HttpStatusCode.OK;

                // this constructor means no body, which indicates a non-200 series status code
                // since we switched the real HTTP status code to 200, we need to turn off caching
                this.Headers.CacheControl = new CacheControlHeaderValue()
                {
                    NoCache = true
                };
            }
        }