/// <summary>Returns the full URL of the request including the query string.</summary>
        /// <remarks>
        /// Returns the full URL of the request including the query string.
        /// <p>
        /// Used as a convenience method for logging purposes.
        /// </remarks>
        /// <param name="request">the request object.</param>
        /// <returns>the full URL of the request including the query string.</returns>
        protected internal virtual string GetRequestURL(HttpServletRequest request)
        {
            StringBuilder sb = request.GetRequestURL();

            if (request.GetQueryString() != null)
            {
                sb.Append("?").Append(request.GetQueryString());
            }
            return(sb.ToString());
        }