/// <remarks>
        /// The reason we have our own is to provide support for System.Web.Helpers.Validation.Unvalidated calls.
        /// NOTE: This won't be needed once AR targets .NET 4.5.
        /// </remarks>
        private static string GetUnvalidatedHttpMethodOverride(HttpRequestBase request)
        {
            var httpMethod = request.HttpMethod;

            // If not a post, method overrides don't apply.
            if (!httpMethod.ValueEquals("POST"))
            {
                return httpMethod;
            }

            // Get the method override and if it's not for a GET or POST, then apply it.
            var methodOverride = request.SafeGet(r => r.Headers["X-HTTP-Method-Override"]) ??
                                 request.SafeGet(r => GetFormValue(r, "X-HTTP-Method-Override")) ??
                                 request.SafeGet(r => GetQueryStringValue(r, "X-HTTP-Method-Override"));

            if (methodOverride != null &&
                (!methodOverride.ValueEquals("GET") && !methodOverride.ValueEquals("POST")))
            {
                return methodOverride;
            }

            // Otherwise, just return the http method.
            return httpMethod;
        }