Hi!
We are running a multi site, i.e. one Umbraco Instance to Host Multiple Sites/domains (one language).
Problem is that some content, like menus and loggo are randomly being displayed using another node/site's content. This happens only sometimes and cant find a way to reproduce on local environment or production.
A guess is that either code like this get wrong value:
Home = currentPage.AncestorOrSelf(1) as Home
or
currentPage is from the wrong site node.
This seem to be most frequent, but not only on that page, on a page where there is a custom IContentFinder to find the relevant page:
public class NotFoundContentFinder : IContentFinder
{
private string _domainRoutePrefixId;
public bool TryFindContent(PublishedContentRequest contentRequest)
{
var uri = contentRequest.Uri.GetAbsolutePathDecoded();
var ds = ApplicationContext.Current.Services.DomainService;
var domains = ds.GetAll(true) as IList<IDomain> ?? ds.GetAll(true).ToList();
_domainRoutePrefixId = String.Empty;
if (domains.Any())
{
IDomain domain = null;
foreach (IDomain currentDomain in domains)
{
if (currentDomain.DomainName.ToLower().StartsWith("http") && contentRequest.Uri.AbsoluteUri.ToLower().StartsWith(currentDomain.DomainName.ToLower()))
{
domain = currentDomain;
break;
}
else if ((contentRequest.Uri.Authority.ToLower() + contentRequest.Uri.AbsolutePath.ToLower()).StartsWith(currentDomain.DomainName.ToLower()))
{
domain = currentDomain;
break;
}
}
if (domain != null)
{
_domainRoutePrefixId = domain.RootContentId.ToString();
}
}
//closestContent not used in code later
var closestContent = UmbracoContext.Current.ContentCache.GetByRoute(_domainRoutePrefixId + uri.ToString(), false);
while (closestContent == null)
{
uri = uri.Remove(uri.Length - 1, 1);
closestContent = UmbracoContext.Current.ContentCache.GetByRoute(_domainRoutePrefixId + uri.ToString(), false);
}
var productPage = GetProductPage(closestContent.Id);
if (productPage != null)
{
contentRequest.PublishedContent = productPage;
return true;
}
// removed some code for brewity
return true;
}
private IPublishedContent GetProductPage(int id)
{
//yeah I know, id not used here
var home = GetHomePage();
if (home != null)
{
var pp = home.ProductPage;
if (pp != null)
return pp;
}
return null;
}
private Home GetHomePage()
{
//is this returning wrong node sometimes?
var home = UmbracoContext.Current.ContentCache.GetByRoute(_domainRoutePrefixId + "/", false) as Home;
return home;
}
}
public class ContentFinderStartUp : ApplicationEventHandler
{
protected override void ApplicationStarting(UmbracoApplicationBase umbracoApplication, ApplicationContext applicationContext)
{
ContentFinderResolver.Current.InsertTypeBefore<ContentFinderByNotFoundHandlers, NotFoundContentFinder>();
}
}
multi site, randomly wrong content
Hi! We are running a multi site, i.e. one Umbraco Instance to Host Multiple Sites/domains (one language).
Problem is that some content, like menus and loggo are randomly being displayed using another node/site's content. This happens only sometimes and cant find a way to reproduce on local environment or production.
A guess is that either code like this get wrong value: Home = currentPage.AncestorOrSelf(1) as Home or currentPage is from the wrong site node.
This seem to be most frequent, but not only on that page, on a page where there is a custom IContentFinder to find the relevant page:
Running on Azure
Umbraco version 7.8.1
web.config settings:
key="umbracoConfigurationStatus" value="7.8.1" key="umbracoHideTopLevelNodeFromPath" value="true" key="umbracoUseDirectoryUrls" value="true" key="umbracoTimeOutInMinutes" value="20" key="umbracoDefaultUILanguage" value="en-US" key="umbracoUseSSL" value="true"
umbraco.config settings:
useDomainPrefixes =true addTrailingSlash=true urlReplacing toAscii="true"
trySkipIisCustomErrors="true" internalRedirectPreservesTemplate="false" disableAlternativeTemplates="false" disableFindContentByIdPath="false" umbracoApplicationUrl="" disableRedirectUrlTracking="true"
Did you ever resolve this issue? We are seeing a similar behavior with Umbraco 8 on azure when running with a multisite setup.
is working on a reply...