Example #1
0
    /// <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);
    }
Example #2
0
        /// <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);
        }