diff --git a/src/Umbraco.Web/Templates/HtmlImageSourceParser.cs b/src/Umbraco.Web/Templates/HtmlImageSourceParser.cs index dcc5318b89..9a3d86c9da 100644 --- a/src/Umbraco.Web/Templates/HtmlImageSourceParser.cs +++ b/src/Umbraco.Web/Templates/HtmlImageSourceParser.cs @@ -13,14 +13,10 @@ namespace Umbraco.Web.Templates this._getMediaUrl = getMediaUrl; } + private readonly IUmbracoContextAccessor _umbracoContextAccessor; public HtmlImageSourceParser(IUmbracoContextAccessor umbracoContextAccessor) { - if (umbracoContextAccessor?.UmbracoContext?.UrlProvider == null) - { - return; - } - - _getMediaUrl = (guid) => umbracoContextAccessor.UmbracoContext.UrlProvider.GetMediaUrl(guid); + _umbracoContextAccessor = umbracoContextAccessor; } private static readonly Regex ResolveImgPattern = new Regex(@"(]*src="")([^""\?]*)((?:\?[^""]*)?""[^>]*data-udi="")([^""]*)(""[^>]*>)", @@ -29,7 +25,7 @@ namespace Umbraco.Web.Templates private static readonly Regex DataUdiAttributeRegex = new Regex(@"data-udi=\\?(?:""|')(?umb://[A-z0-9\-]+/[A-z0-9]+)\\?(?:""|')", RegexOptions.Compiled | RegexOptions.CultureInvariant | RegexOptions.IgnoreCase); - private readonly Func _getMediaUrl; + private Func _getMediaUrl; /// /// Parses out media UDIs from an html string based on 'data-udi' html attributes @@ -57,12 +53,11 @@ namespace Umbraco.Web.Templates /// Umbraco image tags are identified by their data-udi attributes public string EnsureImageSources(string text) { - // no point in doing any processing if we don't have - // a function to retrieve Urls - if (_getMediaUrl == null) - { - return text; - } + if (_umbracoContextAccessor.UmbracoContext == null) + throw new InvalidOperationException("Could not parse image sources, there is no current UmbracoContext"); + + if(_getMediaUrl == null) + _getMediaUrl = (guid) => _umbracoContextAccessor.UmbracoContext.UrlProvider.GetMediaUrl(guid); return ResolveImgPattern.Replace(text, match => {