예제 #1
0
        private (Uri RedirectUri, Uri CanonicalUri) NormalizeUrl()
        {
            //var redirectUri = NormalizeUrl(out var canonicalUri);
            //return (redirectUri, canonicalUri);

            var urlNormalizer = new UrlNormalizer();

            if (urlNormalizer.Normalize()) // no failure, possible redirect
            {
                return(urlNormalizer.NormalizedUri, urlNormalizer.CanonicalUri);
            }

            // could not normalize the url -- log and report it
            var logMessage = urlNormalizer.ErrorMessage;

            if (No404OnUrlNormalizeError)
            {
                logMessage = $"[no 404] {logMessage}";
            }
            Log404Error(logMessage);
            UrlError = urlNormalizer.ErrorMessage;
            if (!No404OnUrlNormalizeError)
            {
                if (IsDebugging)
                {
                    throw new ApplicationException(urlNormalizer.ErrorMessage);
                }
                else
                {
                    SafeTransferToError404();
                }
            }
            return(null, null);
        }
예제 #2
0
        private Uri NormalizeUrl(out Uri canonicalUri)
        {
            var urlNormalizer = new UrlNormalizer();

            if (urlNormalizer.Normalize()) // no failure, possible redirect
            {
                var redirectUri = urlNormalizer.NormalizedUri;
                if (redirectUri != null) // log upcoming redirect
                {
                    Log301Redirect(redirectUri.ToString());
                }
                canonicalUri = urlNormalizer.CanonicalUri;
                return(redirectUri);
            }

            // could not normalize the url -- log and report it
            var logMessage = urlNormalizer.ErrorMessage;

            if (No404OnUrlNormalizeError)
            {
                logMessage = "[no 404] " + logMessage;
            }
            Log404Error(logMessage);
            UrlError = urlNormalizer.ErrorMessage;
            if (!No404OnUrlNormalizeError)
            {
                if (IsDebugging)
                {
                    throw new ApplicationException(urlNormalizer.ErrorMessage);
                }
                else
                {
                    SafeTransferToError404();
                }
            }
            canonicalUri = null;
            return(null);
        }