Worked on AspNetCoreHostingEnvironment.cs

This commit is contained in:
Bjarke Berg
2020-02-25 09:45:56 +01:00
parent 8f5ffb8da6
commit 4aac898e08
4 changed files with 50 additions and 20 deletions

View File

@@ -13,13 +13,13 @@ namespace Umbraco.Web.HealthCheck.Checks.Config
Group = "Configuration")]
public class TrySkipIisCustomErrorsCheck : AbstractConfigCheck
{
private readonly IHostingEnvironment _hostingEnvironment;
private readonly Version _iisVersion;
public TrySkipIisCustomErrorsCheck(ILocalizedTextService textService, IIOHelper ioHelper, ILogger logger,
IHostingEnvironment hostingEnvironment)
: base(textService, ioHelper, logger)
{
_hostingEnvironment = hostingEnvironment;
_iisVersion = hostingEnvironment.IISVersion;
}
public override string FilePath => "~/Config/umbracoSettings.config";
@@ -33,7 +33,7 @@ namespace Umbraco.Web.HealthCheck.Checks.Config
get
{
// beware! 7.5 and 7.5.0 are not the same thing!
var recommendedValue = _hostingEnvironment.IISVersion >= new Version("7.5")
var recommendedValue = _iisVersion >= new Version("7.5")
? bool.TrueString.ToLower()
: bool.FalseString.ToLower();
return new List<AcceptableConfiguration> { new AcceptableConfiguration { IsRecommended = true, Value = recommendedValue } };
@@ -45,7 +45,7 @@ namespace Umbraco.Web.HealthCheck.Checks.Config
get
{
return TextService.Localize("healthcheck/trySkipIisCustomErrorsCheckSuccessMessage",
new[] { Values.First(v => v.IsRecommended).Value, _hostingEnvironment.IISVersion.ToString() });
new[] { Values.First(v => v.IsRecommended).Value, _iisVersion.ToString() });
}
}
@@ -54,7 +54,7 @@ namespace Umbraco.Web.HealthCheck.Checks.Config
get
{
return TextService.Localize("healthcheck/trySkipIisCustomErrorsCheckErrorMessage",
new[] { CurrentValue, Values.First(v => v.IsRecommended).Value, _hostingEnvironment.IISVersion.ToString() });
new[] { CurrentValue, Values.First(v => v.IsRecommended).Value, _iisVersion.ToString() });
}
}
@@ -63,7 +63,7 @@ namespace Umbraco.Web.HealthCheck.Checks.Config
get
{
return TextService.Localize("healthcheck/trySkipIisCustomErrorsCheckRectifySuccessMessage",
new[] { Values.First(v => v.IsRecommended).Value, _hostingEnvironment.IISVersion.ToString() });
new[] { Values.First(v => v.IsRecommended).Value, _iisVersion.ToString() });
}
}
}

View File

@@ -11,8 +11,6 @@ namespace Umbraco.Core.Hosting
string LocalTempPath { get; }
string ApplicationVirtualPath { get; }
int CurrentDomainId { get; }
bool IsDebugMode { get; }
/// <summary>
/// Gets a value indicating whether Umbraco is hosted.

View File

@@ -1,4 +1,3 @@
using System;
using System.IO;
using Microsoft.AspNetCore.Hosting;
@@ -12,6 +11,7 @@ namespace Umbraco.Web.BackOffice.AspNetCore
{
private readonly IHostingSettings _hostingSettings;
private readonly IWebHostEnvironment _webHostEnvironment;
private string _localTempPath;
public AspNetCoreHostingEnvironment(IHostingSettings hostingSettings, IWebHostEnvironment webHostEnvironment)
{
@@ -19,22 +19,57 @@ namespace Umbraco.Web.BackOffice.AspNetCore
_webHostEnvironment = webHostEnvironment;
SiteName = webHostEnvironment.ApplicationName;
ApplicationPhysicalPath = webHostEnvironment.ContentRootPath;
IsHosted = true;
ApplicationVirtualPath = "/"; //TODO how to find this, This is a server thing, not application thing.
ApplicationId = AppDomain.CurrentDomain.Id.ToString();
CurrentDomainId = AppDomain.CurrentDomain.Id;
ApplicationPhysicalPath = webHostEnvironment.ContentRootPath;
ApplicationVirtualPath = "/"; //TODO how to find this, This is a server thing, not application thing.
// IISVersion = HttpRuntime.IISVersion;
IsDebugMode = _hostingSettings.DebugMode;
}
public string SiteName { get; }
public string ApplicationId { get; }
public string ApplicationPhysicalPath { get; }
public string LocalTempPath { get; }
public string LocalTempPath
{
get
{
if (_localTempPath != null)
return _localTempPath;
switch (_hostingSettings.LocalTempStorageLocation)
{
case LocalTempStorage.AspNetTemp:
return _localTempPath = System.IO.Path.Combine(Path.GetTempPath(),ApplicationId, "UmbracoData");
case LocalTempStorage.EnvironmentTemp:
// environment temp is unique, we need a folder per site
// use a hash
// combine site name and application id
// site name is a Guid on Cloud
// application id is eg /LM/W3SVC/123456/ROOT
// the combination is unique on one server
// and, if a site moves from worker A to B and then back to A...
// hopefully it gets a new Guid or new application id?
var hashString = SiteName + "::" + ApplicationId;
var hash = hashString.GenerateHash();
var siteTemp = System.IO.Path.Combine(Environment.ExpandEnvironmentVariables("%temp%"), "UmbracoData", hash);
return _localTempPath = siteTemp;
//case LocalTempStorage.Default:
//case LocalTempStorage.Unknown:
default:
return _localTempPath = MapPath("~/App_Data/TEMP");
}
}
}
public string ApplicationVirtualPath { get; }
public int CurrentDomainId { get; }
public bool IsDebugMode => _hostingSettings.DebugMode;
public bool IsHosted { get; }
public bool IsDebugMode { get; }
public bool IsHosted { get; } = true;
public Version IISVersion { get; }
public string MapPath(string path) => Path.Combine(_webHostEnvironment.WebRootPath, path);

View File

@@ -26,12 +26,9 @@ namespace Umbraco.Web.Hosting
ApplicationId = HostingEnvironment.ApplicationID;
ApplicationPhysicalPath = HostingEnvironment.ApplicationPhysicalPath;
ApplicationVirtualPath = HostingEnvironment.ApplicationVirtualPath;
CurrentDomainId = AppDomain.CurrentDomain.Id;
IISVersion = HttpRuntime.IISVersion;
}
public int CurrentDomainId { get; }
public string SiteName { get; }
public string ApplicationId { get; }
public string ApplicationPhysicalPath { get; }