/// <summary>
        /// Returns the Request content as raw, properly encoded bytes
        /// based on the TextEncoding setting.
        ///
        /// Translates Unicode strings (except for binary data)
        /// to underlying encoding and Binary data (b64_ prefix)
        /// is returned as raw data.
        /// </summary>
        /// <returns>byte[] data or null if no RequestContent</returns>
        public byte[] GetRequestContentBytes()
        {
            if (RequestContent == null)
            {
                return(null);
            }

            if (RequestContent.StartsWith("b64_"))
            {
                return(Convert.FromBase64String(RequestContent.Replace("b64_", "")));
            }

            string textEncoding = TextEncoding.ToLower();

            if (textEncoding == "utf-8")
            {
                return(Encoding.UTF8.GetBytes(RequestContent));
            }

            try
            {
                // try to load the encoding specified
                var enc = Encoding.GetEncoding(TextEncoding);
                return(enc.GetBytes(RequestContent));
            }
            catch
            {}

            // fallback to 'as-is/no' encoding
            return(WindowsEncoding.GetBytes(RequestContent));
        }
        /// <summary>
        /// Reliably returns the request content as a string.
        /// If the content is binary the result is returned
        /// binary markup characters are shown.
        /// </summary>
        /// <returns></returns>
        public string GetRequestContentAsString()
        {
            if (RequestContent == null)
            {
                return(null);
            }

            if (RequestContent.StartsWith("b64_"))
            {
                var enc  = Encoding.GetEncoding(1252);
                var data = Convert.FromBase64String(RequestContent.Replace("b64_", ""));
                return(enc.GetString(data));
            }
            return(RequestContent);
        }