public bool UpdateEtag(HttpResponseBase response, Uri uri, string etag)
        {
            var newLocation = new UriBuilder(uri);
            newLocation.EditQueryArgument(UrlEtagQuerystringName, etag);
            HttpResponseHeaderHelper.SetContentLocation(response, newLocation.Uri);

            return false;
        }
        public bool UpdateEtag(HttpResponseBase response, Uri uri, string etag)
        {
            var newLocation = new UriBuilder(uri);
            newLocation.EditQueryArgument(UrlEtagQuerystringName, etag);
            HttpResponseHeaderHelper.SetTemporaryRedirect(response, newLocation.Uri);

            return true;
        }
        /// <summary>
        /// The url etag handler to use.
        /// </summary>
        /// <param name="request">An HTTP request.</param>
        /// <param name="response">An HTTP response.</param>
        /// <param name="urlEtagHandlingMethod">The url etag handler method to use.</param>
        /// <param name="urlEtagQuerystringName">The querystring parameter name that contains the url etag.</param>
        /// <param name="etag">The etag the url etag should match.</param>
        /// <returns></returns>
        protected IUrlEtagHandler GetUrlEtagHandler(HttpRequestBase request, HttpResponseBase response, UrlEtagHandlingMethodType urlEtagHandlingMethod, string urlEtagQuerystringName, string etag)
        {
            if (urlEtagHandlingMethod == UrlEtagHandlingMethodType.None || !HttpRequestHeaderHelper.HasQuerystringParameter(request, urlEtagQuerystringName))
            {
                return null;
            }

            var urlEtag = HttpRequestHeaderHelper.GetQuerystringParameterValue(request, urlEtagQuerystringName);
            if (urlEtag == etag)
            {
                return null;
            }
            var newLocation = new UriBuilder(request.Url);
            newLocation.EditQueryArgument(urlEtagQuerystringName, etag);

            switch (urlEtagHandlingMethod)
            {
                case UrlEtagHandlingMethodType.ContentLocation:
                    return new UrlEtagHandlerContentLocation(HttpResponseHeaderHelper, urlEtagQuerystringName);
                case UrlEtagHandlingMethodType.MovedPermanently:
                    return new UrlEtagHandlerMovedPermanently(HttpResponseHeaderHelper, urlEtagQuerystringName);
                case UrlEtagHandlingMethodType.TemporaryRedirect:
                    return new UrlEtagHandlerTemporaryRedirect(HttpResponseHeaderHelper, urlEtagQuerystringName);
                default:
                    return null;
            }
        }