diff --git a/src/Umbraco.Core/ApplicationContext.cs b/src/Umbraco.Core/ApplicationContext.cs index d6cf1c27d2..0cacb9fc09 100644 --- a/src/Umbraco.Core/ApplicationContext.cs +++ b/src/Umbraco.Core/ApplicationContext.cs @@ -222,6 +222,8 @@ namespace Umbraco.Core /// internal string OriginalRequestUrl { get; set; } + private bool _versionsDifferenceReported; + /// /// Checks if the version configured matches the assembly version /// @@ -231,17 +233,19 @@ namespace Umbraco.Core { try { - string configStatus = ConfigurationStatus; - string currentVersion = UmbracoVersion.Current.ToString(3); + var configStatus = ConfigurationStatus; + var currentVersion = UmbracoVersion.Current.ToString(3); + var ok = configStatus == currentVersion; - - if (currentVersion != configStatus) + if (ok == false && _versionsDifferenceReported == false) { + // remember it's been reported so we don't flood the log + // no thread-safety so there may be a few log entries, doesn't matter + _versionsDifferenceReported = true; ProfilingLogger.Logger.Debug("CurrentVersion different from configStatus: '" + currentVersion + "','" + configStatus + "'"); } - - return (configStatus == currentVersion); + return ok; } catch { diff --git a/src/Umbraco.Web.UI.Client/src/less/login.less b/src/Umbraco.Web.UI.Client/src/less/login.less index d01dec8733..163909a9f3 100644 --- a/src/Umbraco.Web.UI.Client/src/less/login.less +++ b/src/Umbraco.Web.UI.Client/src/less/login.less @@ -22,9 +22,10 @@ } .login-overlay .form { + position:fixed; display: block; - padding-top: 100px; - padding-left: 165px; + top: 100px; + left: 165px; width: 370px; text-align: right; } @@ -45,6 +46,13 @@ text-align: center; } +@media (max-width: 565px) { + // Remove padding on login-form on smaller devices + .login-overlay .form { + left: inherit; + right:25px; + } + #hrOr { height: 30px; text-align: center; diff --git a/src/Umbraco.Web.UI/umbraco/config/lang/da.xml b/src/Umbraco.Web.UI/umbraco/config/lang/da.xml index ad7737e5be..41e8760eea 100644 --- a/src/Umbraco.Web.UI/umbraco/config/lang/da.xml +++ b/src/Umbraco.Web.UI/umbraco/config/lang/da.xml @@ -863,7 +863,7 @@ Mange hilsner fra Umbraco robotten Redaktør Uddragsfelt Sprog - Login + Brugernavn Startnode i mediearkivet Moduler Deaktivér adgang til Umbraco @@ -881,12 +881,11 @@ Mange hilsner fra Umbraco robotten Vælg sider for at ændre deres rettigheder Søg alle 'børn' Start node - Brugernavn + Navn Bruger tilladelser Brugertype Bruger typer Forfatter - Din profil Din historik Session udløber diff --git a/src/Umbraco.Web.UI/umbraco/config/lang/nl.xml b/src/Umbraco.Web.UI/umbraco/config/lang/nl.xml index 05e9de462e..0320df479e 100644 --- a/src/Umbraco.Web.UI/umbraco/config/lang/nl.xml +++ b/src/Umbraco.Web.UI/umbraco/config/lang/nl.xml @@ -16,8 +16,6 @@ Uitschakelen Prullenbak leegmaken Documenttype exporteren - Exporteer naar .NET - Exporteer naar .NET Documenttype importeren Package importeren Aanpassen in Canvas @@ -51,11 +49,11 @@ Nieuw domein '%0%' is aangemaakt Domein '%0%' is verwijderd Domein '%0' is al aanwezig + Domein '%0%' is bijgewerkt + Bewerk huidige domeinen
Zgn. 'one-level' paden in domeinen worden ondersteund, bijv. "example.com/en". Echter, ze zouden moeten worden vermeden. Gebruik bij voorkeur de cultuurinstelling hierboven.]]>
- Domein '%0%' is bijgewerkt - Bewerk huidige domeinen Overerven Cultuur of erf de cultuur over van de ouder nodes. Zal ook van toepassing
@@ -87,6 +85,7 @@ Macro invoegen Afbeelding invoegen Relaties wijzigen + Terug naar overzicht Opslaan Opslaan en publiceren Opslaan en verzenden voor goedkeuring @@ -117,6 +116,7 @@ Alleen alternatieve types geldig voor de huidige locatie worden weergegeven. + Is gepubliceerd Over deze pagina Alternatieve link (hoe zou jij de foto beschrijven via de telefoon) @@ -133,6 +133,7 @@ Dit item is gewijzigd na publicatie Dit item is niet gepubliceerd Laatst gepubliceerd op + Nog geen items om weer te geven. Mediatype Link naar media item(s) Ledengroep @@ -152,11 +153,12 @@ Om nodes te sorteren, sleep de nodes of klik op één van de kolomtitels. Je kan meerdere nodes tegelijk selecteren door de "shift"- of "control"knop in te drukken tijdens het selecteren. Statistieken Titel (optioneel) + Alternatieve tekst (optioneel) Type Depubliceren Laatst gewijzigd Date/time this document was edited - Bestand verwijderen + Bestand(en) verwijderen Link naar het document Lid van groep(en) Geen lid van groep(en) @@ -170,7 +172,7 @@ Waar wil je de nieuwe %0% aanmaken? - Aanmaken op + Aanmaken onder Kies een type en een titel "Documenttypes".]]> @@ -241,16 +243,20 @@ Cultuurnaam - Type je gebruikersnaam - Type je wachtwoord + Typ je gebruikersnaam + Typ je wachtwoord Benoem de %0%... - Type een naam... - Type om te zoeken... - Type om te filteren... + Typ een naam... + Typ om te zoeken... + Typ om te filteren... + Typ om tags toe te voegen (druk op enter na elke tag)... + Toestaan op root-niveau + Wanneer aangevinkt dan mag dit document type aangemaakt worden op het root-niveau van content of media trees. Toegelaten subnodetypes + Document Type Composities Nieuw Tab verwijderen Omschrijving @@ -258,6 +264,11 @@ Tab Miniatuur Lijstweergave inschakelen + Stelt het content item in zodat een sorteer- en zoekbare lijstweergave van onderliggende nodes wordt getoond. De onderliggende nodes worden niet in de tree getoond + Huidige lijstweergave + De actieve data type in lijstweergave + Maak een aangepaste lijstweergave + Verwijder aangepaste lijstweergave Prevalue toevoegen @@ -501,7 +512,6 @@ Echter, Runway biedt een gemakkelijke basis om je snel op weg te helpen. Als je Sessie is verlopen © 2001 - %0%
umbraco.com

]]>
- Welkom bij Umbraco, geef je gebruikersnaam en wachtwoord op in de onderstaande velden: Dashboard @@ -662,6 +672,9 @@ Echter, Runway biedt een gemakkelijke basis om je snel op weg te helpen. Als je Open in nieuw venster Verwijder link + + Reset + Huidige versie Rode tekst wordt niet getoond in de geselecteerde versie , groen betekent toegevoegd]]> @@ -690,6 +703,8 @@ Echter, Runway biedt een gemakkelijke basis om je snel op weg te helpen. Als je Umbraco Contour Help + Formulieren + Analytics Standaard template @@ -708,6 +723,8 @@ Echter, Runway biedt een gemakkelijke basis om je snel op weg te helpen. Als je Dit inhoudstype gebruikt als basis inhoudstype. Tabs van basis inhoudstypes worden niet getoond en kunnen alleen worden aangepast op het basis inhoudstype zelf Geen eigenschappen gedefinieerd op dit tabblad. Klik op de link "voeg een nieuwe eigenschap" aan de bovenkant om een ​​nieuwe eigenschap te creëren. + Master Document Type + Maak een bijbehorend template Sorteren gereed. @@ -788,36 +805,40 @@ Echter, Runway biedt een gemakkelijke basis om je snel op weg te helpen. Als je Quick Guide voor Umbraco template tags Sjabloon - - Item toevoegen - Een rij aan de lay-out toevoegen - teken onderaan en voeg je eerste item toe]]> + + Item toevoegen + Een rij aan de lay-out toevoegen + teken onderaan en voeg je eerste item toe]]> - Grid lay-outs - Lay-outs zijn het globale werkgebied voor de grid editor. Je hebt meestal maar één of twee verschillende lay-outs nodig - Een grid layout toevoegen - De lay-out aanpassen door de kolombreedte aan te passen en extra kolommen toe te voegen + Klik om een item te embedden + Klik om een afbeelding in te voegen + Afbeelding ondertitel... + Typ hier...... + Grid lay-outs + Lay-outs zijn het globale werkgebied voor de grid editor. Je hebt meestal maar één of twee verschillende lay-outs nodig + Een grid layout toevoegen + De lay-out aanpassen door de kolombreedte aan te passen en extra kolommen toe te voegen - Rijconfiguratie - Rijen zijn voorgedefinieerde cellen die horizontaal zijn gerangschikt - Een rijconfiguratie toevoegen - De rijconfiguratie aanpassen door de breedte van de cel in te stellen en extra cellen toe te voegen + Rijconfiguratie + Rijen zijn voorgedefinieerde cellen die horizontaal zijn gerangschikt + Een rijconfiguratie toevoegen + De rijconfiguratie aanpassen door de breedte van de cel in te stellen en extra cellen toe te voegen - Kolommen - Het totaal aantal gecombineerde kolommen in de grid layout + Kolommen + Het totaal aantal gecombineerde kolommen in de grid layout - Instellingen - Configureren welke instellingen de editors kunnen aanpassen + Instellingen + Configureren welke instellingen de editors kunnen aanpassen - Styles - Configureren welke stijlen de editors kunnen aanpassen + Styles + Configureren welke stijlen de editors kunnen aanpassen - De instellingen worden enkel bewaard indien de ingevoerde Json geldig is + De instellingen worden enkel bewaard indien de ingevoerde Json geldig is - Alle editors toelaten - Alle rijconfiguraties toelaten - + Alle editors toelaten + Alle rijconfiguraties toelaten + Alternatief veld Alternatieve tekst diff --git a/src/Umbraco.Web.UI/umbraco/config/lang/sv.xml b/src/Umbraco.Web.UI/umbraco/config/lang/sv.xml index aed36d5d92..b619025624 100644 --- a/src/Umbraco.Web.UI/umbraco/config/lang/sv.xml +++ b/src/Umbraco.Web.UI/umbraco/config/lang/sv.xml @@ -40,11 +40,11 @@ Lägg till nytt domännamn Domännamn - Har skapat domännamnet {0} - Har tagit bort domännamnet {0} - Domänen {0} är redan tillagd + Har skapat domännamnet %0% + Har tagit bort domännamnet %0% + Domänen %0% är redan tillagd t.ex.: dittdomannamn.se, www.dittdomannamn.se - Domännamnet {0} har uppdaterats + Domännamnet %0% har uppdaterats Domänen är redan tilldelad Ärv Ogiltigt domännamn @@ -145,7 +145,7 @@ Sidnamn Ej medlem av grupp(er) Egenskaper - Detta dokument är publicerat men syns inte eftersom den överordnade sidan {0} inte är publicerad + Detta dokument är publicerat men syns inte eftersom den överordnade sidan %0% inte är publicerad Oops: detta dokument är publicerat men finns inte i cacheminnet (internt fel) Publicera Publiceringsstatus @@ -166,7 +166,7 @@ Länk till dokument - Var vill du skapa den nya {0} + Var vill du skapa den nya %0% Skapa innehåll under "dokumenttyper".]]> "mediatyper".]]> @@ -187,7 +187,7 @@ Stäng fönstret Är du säker på att du vill ta bort Är du säker på att du vill avaktivera - Kryssa i denna ruta för att bekräfta att {0} objekt tas bort + Kryssa i denna ruta för att bekräfta att %0% objekt tas bort Är du säker? Är du säker? Klipp ut @@ -228,7 +228,7 @@ Se cachat objekt - Redigera de olika översättningarna för ordboksinlägget {0} nedan. Du kan lägga till ytterligare språk under 'språk' i menyn till vänster. + Redigera de olika översättningarna för ordboksinlägget %0% nedan. Du kan lägga till ytterligare språk under 'språk' i menyn till vänster. Språknamn @@ -265,15 +265,15 @@ Informationen har sparats, men innan du kan publicera denna sida måste du åtgärda följande fel: Det går inte att byta lösenord i den medlemshanterare du har valt (EnablePasswordRetrieval måste vara satt till 'true'). - {0} redan finns + %0% redan finns Följande fel inträffade: Följande fel inträffade: - Lösenordet måste bestå av minst {0} tecken varav minst {1} är icke-alfanumeriska tecken (t.ex. %, #, !, @). - {0} måste vara ett heltal - {0} under {1} är ett obligatoriskt fält - {0} är ett obligatoriskt fält - {0} under {1} har ett felaktigt format - {0} har ett felaktigt format + Lösenordet måste bestå av minst %0% tecken varav minst %1% är icke-alfanumeriska tecken (t.ex. %, #, !, @). + %0% måste vara ett heltal + %0% under %1% är ett obligatoriskt fält + %0% är ett obligatoriskt fält + %0% under %1% har ett felaktigt format + %0% har ett felaktigt format Även om CodeMirror är aktiverad i konfigurationen, så är den avaktiverad i Internet Explorer på grund av att den inte är tillräckligt stabil @@ -408,12 +408,12 @@ Kunde inte spara filen web.config. Vänligen ändra databasanslutnings-inställningarna manuellt. Din databas har lokaliserats och är identifierad som Databaskonfiguration - installera]]> - Nästa för att fortsätta.]]> + installera]]> + Nästa för att fortsätta.]]> Databasen kunde inte hittas! Kontrollera att informationen i databasanslutnings-inställningarna i filen "web.config" är rätt.

För att fortsätta måste du redigera filen "web.config" (du kan använda Visual Studio eller din favorit text-redigerare), bläddra till slutet, lägg till databasanslutnings-inställningarna för din databas i fältet som heter "umbracoDbDSN" och spara filen.

Klicka på Försök igen knappen när du är klar.
> Mer information om att redigera web.config hittar du här.

]]>
Eventuellt kan du behöva kontakta ditt webb-hotell. Om du installerar på en lokal maskin eller server kan du få informationen från din systemadministratör.]]> - Tryck Uppgradera knappen för att uppgradera din databas till Umbraco {0}

Du behöver inte vara orolig. Inget innehåll kommer att raderas och efteråt kommer allt att fungera som vanligt!

]]>
- Tryck Nästa för att fortsätta.]]> + Tryck Uppgradera knappen för att uppgradera din databas till Umbraco %0%

Du behöver inte vara orolig. Inget innehåll kommer att raderas och efteråt kommer allt att fungera som vanligt!

]]>
+ Tryck Nästa för att fortsätta.]]> Nästa för att fortsätta med konfigurationsguiden]]> Lösenordet på standardanvändaren måste bytas!]]> Standardanvändaren har avaktiverats eller har inte åtkomst till Umbraco!

Du behöver inte göra något ytterligare här. Klicka Next för att fortsätta.]]> @@ -455,13 +455,13 @@ Tack för att du valde Umbraco Besök din nya webbplats Du installerade Runway, så varför inte se hur din nya webbplats ser ut.]]> Ytterligare hjälp och information Få hjälp från våra prisbelönta community, bläddra i dokumentationen eller titta på några gratis videor om hur man bygger en enkel webbplats, hur du använder paket eller en snabbguide till Umbracos terminologi]]> - Umbraco {0} är installerat och klart för användning - /web.config filen och ändra AppSettingsnyckeln UmbracoConfigurationStatus på slutet till {0}]]> + Umbraco %0% är installerat och klart för användning + /web.config filen och ändra AppSettingsnyckeln UmbracoConfigurationStatus på slutet till %0%]]> börja omedelbart genom att klicka på "Starta Umbraco"-knappen nedan.
Om du är en ny Umbraco användarekan du hitta massor av resurser på våra kom igång sidor.]]>
Starta Umbraco För att administrera din webbplats öppnar du bara Umbraco back office och börjar lägga till innehåll, uppdatera mallar och stilmallar eller lägga till nya funktioner.]]> Anslutningen till databasen misslyckades. Se - Umbraco {0} antingen för en ny installation eller en uppgradering från version 3.0.

Tryck på "next" för att börja.]]>
+ Umbraco %0% antingen för en ny installation eller en uppgradering från version 3.0.

Tryck på "next" för att börja.]]>
Umbraco Version 3 Umbraco Version 4 @@ -474,7 +474,7 @@ Förnya nu för att spara ditt arbete - © 2001 - {0}
umbraco.com

]]>
+ © 2001 - %0%
umbraco.com

]]>
Happy super Sunday Happy manic Monday Happy tremendous Tuesday @@ -496,10 +496,10 @@ Välj sida ovan... - {0} har kopierats till {1} - Ange mål att kopiera sidan {0} till nedan - {0} har flyttats till {1} - Ange vart sidan {0} skall flyttas till nedan + %0% har kopierats till %1% + Ange mål att kopiera sidan %0% till nedan + %0% har flyttats till %1% + Ange vart sidan %0% skall flyttas till nedan är nu roten för ditt nya innehåll. Klicka 'ok' nedan. Du har inte valt någon sida än. Välj en sida i listan ovan och klicka sedan 'fortsätt'. Aktuell nod får inte existera i roten @@ -550,7 +550,7 @@ Fyll i ett namn... Skriv för att filtrera... - Namnge {0}... + Namnge %0%... Fyll i ditt lösenord Skriv för att söka... Fyll i ditt lösenord @@ -562,8 +562,8 @@ Sida med felmeddelande Används när en användare är inloggad, men saknar rättigheter att se sidan Välj hur du vill lösenordsskydda sidan - {0} är nu lösenordsskyddad - Lösenordsskyddet är nu borttaget på {0} + %0% är nu lösenordsskyddad + Lösenordsskyddet är nu borttaget på %0% Inloggningssida Välj sidan med inloggningsformuläret Ta bort lösenordsskydd @@ -574,17 +574,17 @@ Välj detta alternativ om du vill skydda sidan med ett enkelt användarnamn och lösenord. Alla loggar då in med samma inloggningsuppgifter. - {0} kunde inte publiceras på grund av dess tidsinställda publicering. - {0} kunde inte publiceras på grund av att ett tredjepartstillägg avbröt publiceringen. - {0} kan inte publiceras, på grund av att överordnad nod inte är publicerad. - {0} kunde inte publiceras på grund av följande orsaker: {1} passerade inte valideringen. + %0% kunde inte publiceras på grund av dess tidsinställda publicering. + %0% kunde inte publiceras på grund av att ett tredjepartstillägg avbröt publiceringen. + %0% kan inte publiceras, på grund av att överordnad nod inte är publicerad. + %0% kunde inte publiceras på grund av följande orsaker: %1% passerade inte valideringen. Inkludera opublicerade undersidor Publicering pågår - vänligen vänta... - {0} av {1} sidor har publicerats... - {0} har publicerats - {0} och underliggande sidor har publicerats - Publicera {0} och alla dess underordnade sidor - ok för att publicera {0}. Därmed blir innehållet publikt.

Du kan publicera denna sida och alla dess undersidor genom att kryssa i publicera alla undersidor. ]]>
+ %0% av %1% sidor har publicerats... + %0% har publicerats + %0% och underliggande sidor har publicerats + Publicera %0% och alla dess underordnade sidor + ok för att publicera %0%. Därmed blir innehållet publikt.

Du kan publicera denna sida och alla dess undersidor genom att kryssa i publicera alla undersidor. ]]>
Lägg till extern länk @@ -654,12 +654,12 @@ Publiceringen avbröts av ett tredjepartstillägg Egenskapstyp finns redan Egenskapstyp skapad - Datatyp: {1}]]> + Datatyp: %1%]]> Egenskapstypen har tagits bort Innehållstypen har sparats Ny flik skapad Fliken har tagits bort - Fliken med id: {0} har tagits bort + Fliken med id: %0% har tagits bort Innehållet är avpublicerat Stilmallen kunde inte sparas Stilmallen sparades @@ -790,13 +790,13 @@ Ladda hem DTD för XML Fält Inkludera undersidor - Hej {0}. Detta är ett automatisk mail skickat for att informera dig om att det finns en översättningsförfrågan på dokument '%1' till '{5}' skickad av {2}. För att redigere, besök http://{3}/translation/details.aspx?id={4}. För att få en översikt över dina översättningsuppgigter loggar du in i Umbraco på: http://{3} - [{0}] Översättningsuppgit för {1} + Hej %0%. Detta är ett automatisk mail skickat for att informera dig om att det finns en översättningsförfrågan på dokument '%1%' till '%5%' skickad av %2%. För att redigera, besök http://%3%/translation/details.aspx?id=%4%. För att få en översikt över dina översättningsuppgigter loggar du in i Umbraco på: http://%3% + [%0%] Översättningsuppgift för %1% Hittade inga användare som är översättare. Vänligen skapa en användare som är översättare innan du börjar skicka innehåll för översättning Arbetsuppgifter som du har skapat som du har skapat. För att se en detaljvy med kommentarer, klicka på "Detaljer" eller på sidans namn. Du kan också ladda ned sidan i XML-format genom att klicka på länken "Ladda ned XML".
För att markera ett översättningsjobb som avslutat, gå till detaljvyn och klicka på knappen "Stäng".]]>
- Sidan {0} har skickats för översättning - Skicka sidan {0} för översättning + Sidan %0% har skickats för översättning + Skicka sidan %0% för översättning Tilldelat av Arbetsuppgift öppnad Totalt antal ord @@ -841,7 +841,7 @@ Ny uppdatering tillgänglig - {0} är klart, klicka här för att ladda ner + %0% är klart, klicka här för att ladda ner Ingen kontakt med server Fel vid kontroll av uppdatering. Se trace-stack för mer information. diff --git a/src/Umbraco.Web/Scheduling/BackgroundTaskRunner.cs b/src/Umbraco.Web/Scheduling/BackgroundTaskRunner.cs index dc873f82ce..e317a348cc 100644 --- a/src/Umbraco.Web/Scheduling/BackgroundTaskRunner.cs +++ b/src/Umbraco.Web/Scheduling/BackgroundTaskRunner.cs @@ -535,7 +535,7 @@ namespace Umbraco.Web.Scheduling // processing, call the UnregisterObject method, and then return or it can return immediately and complete // processing asynchronously before calling the UnregisterObject method. - _logger.Debug>("Shutting down, waiting for tasks to complete."); + _logger.Info>("Shutting down, waiting for tasks to complete."); Shutdown(false, false); // do not accept any more tasks, flush the queue, do not wait lock (_locker) diff --git a/src/Umbraco.Web/UmbracoModule.cs b/src/Umbraco.Web/UmbracoModule.cs index 1142775be6..b784e4eac8 100644 --- a/src/Umbraco.Web/UmbracoModule.cs +++ b/src/Umbraco.Web/UmbracoModule.cs @@ -372,15 +372,23 @@ namespace Umbraco.Web return false; } + private bool _notConfiguredReported; + // ensures Umbraco is configured // if not, redirect to install and return false // if yes, return true - private static bool EnsureIsConfigured(HttpContextBase httpContext, Uri uri) + private bool EnsureIsConfigured(HttpContextBase httpContext, Uri uri) { if (ApplicationContext.Current.IsConfigured) return true; - LogHelper.Warn("Umbraco is not configured"); + if (_notConfiguredReported) + { + // remember it's been reported so we don't flood the log + // no thread-safety so there may be a few log entries, doesn't matter + _notConfiguredReported = true; + LogHelper.Warn("Umbraco is not configured"); + } var installPath = UriUtility.ToAbsolute(SystemDirectories.Install); var installUrl = string.Format("{0}/?redir=true&url={1}", installPath, HttpUtility.UrlEncode(uri.ToString())); diff --git a/src/Umbraco.Web/umbraco.presentation/content.cs b/src/Umbraco.Web/umbraco.presentation/content.cs index 8c2eca313c..af12d72a10 100644 --- a/src/Umbraco.Web/umbraco.presentation/content.cs +++ b/src/Umbraco.Web/umbraco.presentation/content.cs @@ -802,6 +802,7 @@ order by umbracoNode.level, umbracoNode.sortOrder"; private void LoadXmlLocked(SafeXmlReaderWriter safeXml, out bool registerXmlChange) { LogHelper.Debug("Loading Xml..."); + EnsureFileLock(); // get the lock asap // try to get it from the file if (XmlFileEnabled && (safeXml.Xml = LoadXmlFromFile()) != null) @@ -1061,12 +1062,14 @@ order by umbracoNode.level, umbracoNode.sortOrder"; internal void SaveXmlToFile() { LogHelper.Info("Save Xml to file..."); - EnsureFileLock(); - - var xml = _xmlContent; // capture (atomic + volatile), immutable anyway try { + var xml = _xmlContent; // capture (atomic + volatile), immutable anyway + if (xml == null) return; + + EnsureFileLock(); + // delete existing file, if any DeleteXmlFile(); @@ -1084,7 +1087,7 @@ order by umbracoNode.level, umbracoNode.sortOrder"; fs.Write(bytes, 0, bytes.Length); } - LogHelper.Debug("Saved Xml to file."); + LogHelper.Info("Saved Xml to file."); } catch (Exception e) { @@ -1099,12 +1102,14 @@ order by umbracoNode.level, umbracoNode.sortOrder"; internal async System.Threading.Tasks.Task SaveXmlToFileAsync() { LogHelper.Info("Save Xml to file..."); - EnsureFileLock(); - - var xml = _xmlContent; // capture (atomic + volatile), immutable anyway try { + var xml = _xmlContent; // capture (atomic + volatile), immutable anyway + if (xml == null) return; + + EnsureFileLock(); + // delete existing file, if any DeleteXmlFile(); @@ -1122,7 +1127,7 @@ order by umbracoNode.level, umbracoNode.sortOrder"; await fs.WriteAsync(bytes, 0, bytes.Length); } - LogHelper.Debug("Saved Xml to file."); + LogHelper.Info("Saved Xml to file."); } catch (Exception e) { @@ -1165,19 +1170,25 @@ order by umbracoNode.level, umbracoNode.sortOrder"; private XmlDocument LoadXmlFromFile() { LogHelper.Info("Load Xml from file..."); - EnsureFileLock(); try { + EnsureFileLock(); + var xml = new XmlDocument(); using (var fs = new FileStream(_xmlFileName, FileMode.Open, FileAccess.Read, FileShare.Read)) { xml.Load(fs); } _lastFileRead = DateTime.UtcNow; - LogHelper.Info("Successfully loaded Xml from file."); + LogHelper.Info("Loaded Xml from file."); return xml; } + catch (FileNotFoundException) + { + LogHelper.Warn("Failed to load Xml, file does not exist."); + return null; + } catch (Exception e) { LogHelper.Error("Failed to load Xml from file.", e);