/// <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));
        }