/// <summary> /// Allow static file access for App_Plugins folders /// </summary> /// <param name="app"></param> /// <returns></returns> public static IApplicationBuilder UseUmbracoPluginsStaticFiles(this IApplicationBuilder app) { IHostEnvironment hostingEnvironment = app.ApplicationServices.GetRequiredService <IHostEnvironment>(); var pluginFolder = hostingEnvironment.MapPathContentRoot(Constants.SystemDirectories.AppPlugins); if (Directory.Exists(pluginFolder)) { IOptionsMonitor <UmbracoPluginSettings> umbracoPluginSettings = app.ApplicationServices.GetRequiredService <IOptionsMonitor <UmbracoPluginSettings> >(); var pluginFileProvider = new UmbracoPluginPhysicalFileProvider( pluginFolder, umbracoPluginSettings); IWebHostEnvironment?webHostEnvironment = app.ApplicationServices.GetService <IWebHostEnvironment>(); if (webHostEnvironment is not null) { webHostEnvironment.WebRootFileProvider = webHostEnvironment.WebRootFileProvider.ConcatComposite( new PrependBasePathFileProvider(Constants.SystemDirectories.AppPlugins, pluginFileProvider)); } } return(app); }
/// <summary> /// Allow static file access for App_Plugins folders /// </summary> /// <param name="app"></param> /// <returns></returns> public static IApplicationBuilder UseUmbracoPluginsStaticFiles(this IApplicationBuilder app) { var hostingEnvironment = app.ApplicationServices.GetRequiredService <IHostingEnvironment>(); var umbracoPluginSettings = app.ApplicationServices.GetRequiredService <IOptions <UmbracoPluginSettings> >(); var pluginFolder = hostingEnvironment.MapPathContentRoot(Constants.SystemDirectories.AppPlugins); // Ensure the plugin folder exists Directory.CreateDirectory(pluginFolder); var fileProvider = new UmbracoPluginPhysicalFileProvider( pluginFolder, umbracoPluginSettings); app.UseStaticFiles(new StaticFileOptions { FileProvider = fileProvider, RequestPath = Constants.SystemDirectories.AppPlugins }); return(app); }