diff --git a/NzbDrone/ApplicationServer.cs b/NzbDrone/ApplicationServer.cs index 5d3ad762c..d11a8c603 100644 --- a/NzbDrone/ApplicationServer.cs +++ b/NzbDrone/ApplicationServer.cs @@ -1,4 +1,6 @@ using System; +using System.IO; +using System.Runtime.InteropServices; using System.ServiceProcess; using NLog; using Ninject; @@ -19,11 +21,13 @@ namespace NzbDrone private readonly ProcessProvider _processProvider; private readonly MonitoringProvider _monitoringProvider; private readonly SecurityProvider _securityProvider; + private readonly DiskProvider _diskProvider; [Inject] public ApplicationServer(ConfigFileProvider configFileProvider, IISProvider iisProvider, DebuggerProvider debuggerProvider, EnvironmentProvider environmentProvider, - ProcessProvider processProvider, MonitoringProvider monitoringProvider, SecurityProvider securityProvider) + ProcessProvider processProvider, MonitoringProvider monitoringProvider, + SecurityProvider securityProvider, DiskProvider diskProvider) { _configFileProvider = configFileProvider; _iisProvider = iisProvider; @@ -32,6 +36,7 @@ namespace NzbDrone _processProvider = processProvider; _monitoringProvider = monitoringProvider; _securityProvider = securityProvider; + _diskProvider = diskProvider; } public ApplicationServer() @@ -48,6 +53,14 @@ namespace NzbDrone { _iisProvider.StopServer(); _securityProvider.MakeAccessible(); + + if(_securityProvider.IsCurrentUserAdmin()) + { + var tempFiles = Path.Combine(RuntimeEnvironment.GetRuntimeDirectory(), "Temporary ASP.NET Files"); + logger.Debug("Creating Temporary ASP.Net folder: {0}", tempFiles); + _diskProvider.CreateDirectory(tempFiles); + } + _iisProvider.StartServer(); _debuggerProvider.Attach();