Exemplo n.º 1
0
        private static string GetCustomPageNotFoundUrl(HttpContext httpContext)
        {
            if (httpContext == null)
            {
                return(null);
            }

            var binding = GetHostnameBinding(httpContext);

            if (string.IsNullOrEmpty(binding?.PageNotFoundUrl))
            {
                return(null);
            }

            string url = binding.PageNotFoundUrl;

            var defaultCulture = DataLocalizationFacade.DefaultLocalizationCulture;

            CultureInfo localeFromRequest =
                C1PageRoute.PageUrlData?.LocalizationScope
                ?? DefaultPageUrlProvider.GetCultureInfo(httpContext.Request.FilePath, binding, out _)
                ?? defaultCulture;

            using (new DataConnection(localeFromRequest))
            {
                url = InternalUrls.TryConvertInternalUrlToPublic(url) ?? url;
            }

            if (url.StartsWith("~/") && localeFromRequest.Name != defaultCulture.Name)
            {
                using (new DataConnection(defaultCulture))
                {
                    url = InternalUrls.TryConvertInternalUrlToPublic(url) ?? url;
                }
            }

            if (url.StartsWith("~/"))
            {
                url = UrlUtils.ResolvePublicUrl(url);
            }

            return(url);
        }
Exemplo n.º 2
0
        internal static string GetCustomPageNotFoundUrl()
        {
            var binding = GetBindingForCurrentRequest();

            if (binding == null || string.IsNullOrEmpty(binding.PageNotFoundUrl))
            {
                return(null);
            }

            string url = binding.PageNotFoundUrl;

            var defaultCulture = DataLocalizationFacade.DefaultLocalizationCulture;

            var         pageUrlData       = C1PageRoute.PageUrlData;
            CultureInfo localeFromRequest = pageUrlData != null
                ? pageUrlData.LocalizationScope
                : defaultCulture;

            using (new DataConnection(localeFromRequest))
            {
                url = InternalUrls.TryConvertInternalUrlToPublic(url) ?? url;
            }

            if (url.StartsWith("~/") && localeFromRequest.Name != defaultCulture.Name)
            {
                using (new DataConnection(defaultCulture))
                {
                    url = InternalUrls.TryConvertInternalUrlToPublic(url) ?? url;
                }
            }

            if (url.StartsWith("~/"))
            {
                url = UrlUtils.ResolvePublicUrl(url);
            }

            return(url);
        }