diff --git a/src/Umbraco.Web.Common/ApplicationBuilder/UmbracoApplicationBuilder.cs b/src/Umbraco.Web.Common/ApplicationBuilder/UmbracoApplicationBuilder.cs index 91456565b1..93fb6f3143 100644 --- a/src/Umbraco.Web.Common/ApplicationBuilder/UmbracoApplicationBuilder.cs +++ b/src/Umbraco.Web.Common/ApplicationBuilder/UmbracoApplicationBuilder.cs @@ -1,14 +1,8 @@ using Microsoft.AspNetCore.Builder; -using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.DependencyInjection; -using Microsoft.Extensions.FileProviders; using Microsoft.Extensions.Options; -using Umbraco.Cms.Core.Configuration.Models; -using Umbraco.Cms.Core.IO; using Umbraco.Cms.Core.Services; -using Umbraco.Cms.Web.Common.Media; using Umbraco.Extensions; -using IHostingEnvironment = Umbraco.Cms.Core.Hosting.IHostingEnvironment; namespace Umbraco.Cms.Web.Common.ApplicationBuilder; @@ -77,24 +71,7 @@ public class UmbracoApplicationBuilder : IUmbracoApplicationBuilder, IUmbracoEnd { UseUmbracoCoreMiddleware(); - // Get media file provider and request path/URL - MediaFileManager mediaFileManager = AppBuilder.ApplicationServices.GetRequiredService(); - if (mediaFileManager.FileSystem.TryCreateFileProvider(out IFileProvider? mediaFileProvider)) - { - GlobalSettings globalSettings = - AppBuilder.ApplicationServices.GetRequiredService>().Value; - IHostingEnvironment? hostingEnvironment = AppBuilder.ApplicationServices.GetService(); - var mediaRequestPath = hostingEnvironment?.ToAbsolute(globalSettings.UmbracoMediaPath); - - // Configure custom file provider for media - IWebHostEnvironment? webHostEnvironment = AppBuilder.ApplicationServices.GetService(); - if (webHostEnvironment is not null) - { - webHostEnvironment.WebRootFileProvider = - webHostEnvironment.WebRootFileProvider.ConcatComposite( - new MediaPrependBasePathFileProvider(mediaRequestPath, mediaFileProvider)); - } - } + AppBuilder.UseUmbracoMediaFileProvider(); AppBuilder.UseStaticFiles(); diff --git a/src/Umbraco.Web.Common/Extensions/ApplicationBuilderExtensions.cs b/src/Umbraco.Web.Common/Extensions/ApplicationBuilderExtensions.cs index 6d9481e666..08a22cfda3 100644 --- a/src/Umbraco.Web.Common/Extensions/ApplicationBuilderExtensions.cs +++ b/src/Umbraco.Web.Common/Extensions/ApplicationBuilderExtensions.cs @@ -2,6 +2,7 @@ using Dazinator.Extensions.FileProviders.PrependBasePath; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.FileProviders; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Options; using Serilog.Context; @@ -9,11 +10,14 @@ using StackExchange.Profiling; using Umbraco.Cms.Core; using Umbraco.Cms.Core.Configuration.Models; using Umbraco.Cms.Core.Extensions; +using Umbraco.Cms.Core.IO; using Umbraco.Cms.Core.Logging.Serilog.Enrichers; using Umbraco.Cms.Core.Services; using Umbraco.Cms.Web.Common.ApplicationBuilder; +using Umbraco.Cms.Web.Common.Media; using Umbraco.Cms.Web.Common.Middleware; using Umbraco.Cms.Web.Common.Plugins; +using IHostingEnvironment = Umbraco.Cms.Core.Hosting.IHostingEnvironment; namespace Umbraco.Extensions; @@ -110,8 +114,6 @@ public static class ApplicationBuilderExtensions /// /// Allow static file access for App_Plugins folders /// - /// - /// public static IApplicationBuilder UseUmbracoPluginsStaticFiles(this IApplicationBuilder app) { IHostEnvironment hostingEnvironment = app.ApplicationServices.GetRequiredService(); @@ -137,4 +139,31 @@ public static class ApplicationBuilderExtensions return app; } + + /// + /// Configure custom umbraco file provider for media + /// + public static IApplicationBuilder UseUmbracoMediaFileProvider(this IApplicationBuilder app) + { + // Get media file provider and request path/URL + MediaFileManager mediaFileManager = app.ApplicationServices.GetRequiredService(); + if (mediaFileManager.FileSystem.TryCreateFileProvider(out IFileProvider? mediaFileProvider)) + { + GlobalSettings globalSettings = + app.ApplicationServices.GetRequiredService>().Value; + IHostingEnvironment? hostingEnvironment = app.ApplicationServices.GetService(); + var mediaRequestPath = hostingEnvironment?.ToAbsolute(globalSettings.UmbracoMediaPath); + + // Configure custom file provider for media + IWebHostEnvironment? webHostEnvironment = app.ApplicationServices.GetService(); + if (webHostEnvironment is not null) + { + webHostEnvironment.WebRootFileProvider = + webHostEnvironment.WebRootFileProvider.ConcatComposite( + new MediaPrependBasePathFileProvider(mediaRequestPath, mediaFileProvider)); + } + } + + return app; + } }