diff --git a/src/Umbraco.Core/Configuration/GlobalSettings.cs b/src/Umbraco.Core/Configuration/GlobalSettings.cs
index acbf0065c0..429d9f0ef9 100644
--- a/src/Umbraco.Core/Configuration/GlobalSettings.cs
+++ b/src/Umbraco.Core/Configuration/GlobalSettings.cs
@@ -518,24 +518,41 @@ namespace Umbraco.Core.Configuration
internal static bool ContentCacheXmlStoredInCodeGen
{
- get { return ContentCacheXmlStorageLocation == ContentXmlStorage.AspNetTemp; }
+ get { return LocalTempStorageLocation == LocalTempStorage.AspNetTemp; }
}
-
- internal static ContentXmlStorage ContentCacheXmlStorageLocation
+
+ ///
+ /// This is the location type to store temporary files such as cache files or other localized files for a given machine
+ ///
+ ///
+ /// Currently used for the xml cache file and the plugin cache files
+ ///
+ internal static LocalTempStorage LocalTempStorageLocation
{
get
- {
+ {
+ //there's a bunch of backwards compat config checks here....
+
+ //This is the current one
+ if (ConfigurationManager.AppSettings.ContainsKey("umbracoLocalTempStorage"))
+ {
+ return Enum.Parse(ConfigurationManager.AppSettings["umbracoLocalTempStorage"]);
+ }
+
+ //This one is old
if (ConfigurationManager.AppSettings.ContainsKey("umbracoContentXMLStorage"))
{
- return Enum.Parse(ConfigurationManager.AppSettings["umbracoContentXMLStorage"]);
- }
+ return Enum.Parse(ConfigurationManager.AppSettings["umbracoContentXMLStorage"]);
+ }
+
+ //This one is older
if (ConfigurationManager.AppSettings.ContainsKey("umbracoContentXMLUseLocalTemp"))
{
return bool.Parse(ConfigurationManager.AppSettings["umbracoContentXMLUseLocalTemp"])
- ? ContentXmlStorage.AspNetTemp
- : ContentXmlStorage.Default;
+ ? LocalTempStorage.AspNetTemp
+ : LocalTempStorage.Default;
}
- return ContentXmlStorage.Default;
+ return LocalTempStorage.Default;
}
}
diff --git a/src/Umbraco.Core/Configuration/ContentXmlStorage.cs b/src/Umbraco.Core/Configuration/LocalTempStorage.cs
similarity index 75%
rename from src/Umbraco.Core/Configuration/ContentXmlStorage.cs
rename to src/Umbraco.Core/Configuration/LocalTempStorage.cs
index 7cbbc70675..d41f7d1925 100644
--- a/src/Umbraco.Core/Configuration/ContentXmlStorage.cs
+++ b/src/Umbraco.Core/Configuration/LocalTempStorage.cs
@@ -1,6 +1,6 @@
namespace Umbraco.Core.Configuration
{
- internal enum ContentXmlStorage
+ internal enum LocalTempStorage
{
Default,
AspNetTemp,
diff --git a/src/Umbraco.Core/IO/SystemFiles.cs b/src/Umbraco.Core/IO/SystemFiles.cs
index 437ddd3ef7..412849d5b0 100644
--- a/src/Umbraco.Core/IO/SystemFiles.cs
+++ b/src/Umbraco.Core/IO/SystemFiles.cs
@@ -73,11 +73,11 @@ namespace Umbraco.Core.IO
{
get
{
- switch (GlobalSettings.ContentCacheXmlStorageLocation)
+ switch (GlobalSettings.LocalTempStorageLocation)
{
- case ContentXmlStorage.AspNetTemp:
+ case LocalTempStorage.AspNetTemp:
return Path.Combine(HttpRuntime.CodegenDir, @"UmbracoData\umbraco.config");
- case ContentXmlStorage.EnvironmentTemp:
+ case LocalTempStorage.EnvironmentTemp:
var appDomainHash = HttpRuntime.AppDomainAppId.ToSHA1();
var cachePath = Path.Combine(Environment.ExpandEnvironmentVariables("%temp%"), "UmbracoXml",
//include the appdomain hash is just a safety check, for example if a website is moved from worker A to worker B and then back
@@ -85,7 +85,7 @@ namespace Umbraco.Core.IO
// utilizing an old path
appDomainHash);
return Path.Combine(cachePath, "umbraco.config");
- case ContentXmlStorage.Default:
+ case LocalTempStorage.Default:
return IOHelper.ReturnPath("umbracoContentXML", "~/App_Data/umbraco.config");
default:
throw new ArgumentOutOfRangeException();
diff --git a/src/Umbraco.Core/PluginManager.cs b/src/Umbraco.Core/PluginManager.cs
index f90163d181..b6a72f74cf 100644
--- a/src/Umbraco.Core/PluginManager.cs
+++ b/src/Umbraco.Core/PluginManager.cs
@@ -6,6 +6,7 @@ using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading;
+using System.Web;
using System.Web.Compilation;
using Umbraco.Core.Cache;
using Umbraco.Core.IO;
@@ -15,6 +16,7 @@ using Umbraco.Core.Persistence.SqlSyntax;
using Umbraco.Core.Profiling;
using Umbraco.Core.PropertyEditors;
using umbraco.interfaces;
+using Umbraco.Core.Configuration;
using File = System.IO.File;
namespace Umbraco.Core
@@ -426,9 +428,23 @@ namespace Umbraco.Core
}
private string GetPluginListFilePath()
- {
- var filename = "umbraco-plugins." + NetworkHelper.FileSafeMachineName + ".list";
- return Path.Combine(_tempFolder, filename);
+ {
+ switch (GlobalSettings.LocalTempStorageLocation)
+ {
+ case LocalTempStorage.AspNetTemp:
+ return Path.Combine(HttpRuntime.CodegenDir, "umbraco-plugins.list");
+ case LocalTempStorage.EnvironmentTemp:
+ var appDomainHash = HttpRuntime.AppDomainAppId.ToSHA1();
+ var cachePath = Path.Combine(Environment.ExpandEnvironmentVariables("%temp%"), "UmbracoPlugins",
+ //include the appdomain hash is just a safety check, for example if a website is moved from worker A to worker B and then back
+ // to worker A again, in theory the %temp% folder should already be empty but we really want to make sure that its not
+ // utilizing an old path
+ appDomainHash);
+ return Path.Combine(cachePath, "umbraco-plugins.list");
+ case LocalTempStorage.Default:
+ default:
+ return Path.Combine(_tempFolder, "umbraco-plugins." + NetworkHelper.FileSafeMachineName + ".list");
+ }
}
private string GetPluginHashFilePath()
diff --git a/src/Umbraco.Core/Umbraco.Core.csproj b/src/Umbraco.Core/Umbraco.Core.csproj
index 37867fce80..3dc90f2d41 100644
--- a/src/Umbraco.Core/Umbraco.Core.csproj
+++ b/src/Umbraco.Core/Umbraco.Core.csproj
@@ -200,7 +200,7 @@
-
+