private void RecursiveCircularLoop(IList<Redirect> redirects, string redirectUrl, List<Guid> checkedIds, string startPageUrl, string startRedirectUrl)
{
var redirectTo = redirects.FirstOrDefault(r => r.PageUrl == redirectUrl);
if (redirectTo != null)
{
if (checkedIds.Contains(redirectTo.Id))
{
var message = PagesGlobalization.SaveRedirect_CircularLoopDetected_Message;
var logMessage = string.Format("Cannot save redirect. Circular redirect loop from url {0} to url {1} detected.", startPageUrl, startRedirectUrl);
throw new ValidationException(() => message, logMessage);
}
checkedIds.Add(redirectTo.Id);
RecursiveCircularLoop(redirects, redirectTo.RedirectUrl, checkedIds, startPageUrl, startRedirectUrl);
}
}