private static void mapStorage(IApplicationBuilder appBuilder)
        {
            var manifestEmbeddedProvider =
                new ManifestEmbeddedFileProvider(Assembly.GetExecutingAssembly());

            appBuilder.Map("/blocklyStorage", app =>
            {
                app.Run(async cnt =>
                {
                    string nameFile = "extensions/SaveToLocalStorage.js";
                    IFileInfo f     = new PhysicalFileInfo(new FileInfo("wwwroot/" + nameFile));

                    if (!f.Exists)
                    {
                        f = manifestEmbeddedProvider.GetFileInfo("blocklyFiles/" + nameFile);
                    }
                    //TODO: add corect mime type for js files
                    using var stream = new MemoryStream();
                    using var cs     = f.CreateReadStream();
                    byte[] buffer    = new byte[2048]; // read in chunks of 2KB
                    int bytesRead;
                    while ((bytesRead = cs.Read(buffer, 0, buffer.Length)) > 0)
                    {
                        stream.Write(buffer, 0, bytesRead);
                    }
                    byte[] result = stream.ToArray();
                    // TODO: do something with the result
                    var m = new Memory <byte>(result);
                    await cnt.Response.BodyWriter.WriteAsync(m);
                });
            });
        }
Beispiel #2
0
        private static void UseFileServer(this IApplicationBuilder app, QuartzminOptions options)
        {
            IFileProvider fs;

            if (string.IsNullOrEmpty(options.ContentRootDirectory))
            {
                fs = new ManifestEmbeddedFileProvider(Assembly.GetExecutingAssembly(), "Content");
            }
            else
            {
                fs = new PhysicalFileProvider(options.ContentRootDirectory);
            }

            var fsOptions = new FileServerOptions()
            {
#if NETCOREAPP
                RequestPath = new PathString("/Quartzmin/Content"),
#else
                RequestPath = new PathString("/Content"),
#endif
                EnableDefaultFiles      = false,
                EnableDirectoryBrowsing = false,
                FileProvider            = fs
            };

            app.UseFileServer(fsOptions);
        }
Beispiel #3
0
 public static void UseBlocklyUI(this IApplicationBuilder appBuilder, IWebHostEnvironment environment)
 {
     if (FileProvider == null)
     {
         var manifestEmbeddedProvider =
             new ManifestEmbeddedFileProvider(Assembly.GetExecutingAssembly());
         var service = appBuilder.ApplicationServices;
         FileProvider = manifestEmbeddedProvider;
         if (environment != null)
         {
             var originalProvider = environment.ContentRootFileProvider;
             var pRoot            = originalProvider as PhysicalFileProvider;
             if (pRoot != null)
             {
                 //try to add wwwroot for standalone
                 string wwwrootFolder = Path.Combine(pRoot.Root, "wwwroot");
                 if (Directory.Exists(wwwrootFolder))
                 {
                     pRoot = new PhysicalFileProvider(wwwrootFolder);
                 }
                 FileProvider =
                     new CompositeFileProvider(pRoot, manifestEmbeddedProvider);
             }
             else if (originalProvider != null)
             {
                 FileProvider =
                     new CompositeFileProvider(originalProvider, manifestEmbeddedProvider);
             }
         }
     }
     mapFile("BlocklyAutomation", FileProvider, appBuilder);
 }
        /// <summary>
        /// Uses the cli.
        /// </summary>
        /// <param name="appBuilder">The application builder.</param>
        public static void UseBlocklyUI(this IApplicationBuilder appBuilder)
        {
            var manifestEmbeddedProvider =
                new ManifestEmbeddedFileProvider(Assembly.GetExecutingAssembly());

            mapFile("blocklyFiles", manifestEmbeddedProvider, appBuilder);
        }
Beispiel #5
0
        /// <summary>提交配置</summary>
        /// <param name="name"></param>
        /// <param name="options"></param>
        public void PostConfigure(String name, StaticFileOptions options)
        {
            if (name.IsNullOrEmpty())
            {
                throw new ArgumentException(nameof(name));
            }
            if (options == null)
            {
                throw new ArgumentException(nameof(options));
            }

            // 如果没有被其他组件初始化,在这里初始化
            options.ContentTypeProvider ??= new FileExtensionContentTypeProvider();
            if (options.FileProvider == null && Environment.ContentRootFileProvider == null)
            {
                throw new InvalidOperationException("缺少FileProvider");
            }

            options.FileProvider ??= Environment.ContentRootFileProvider;

            // 添加我们的文件提供者
            // 第二个参数指定开始查找的文件夹,比如文件都放在wwwroot,就填“wwwroot”
            var filesProvider = new ManifestEmbeddedFileProvider(GetType().Assembly, Setting.Current.WebRootPath);

            options.FileProvider = new CompositeFileProvider(options.FileProvider, filesProvider);
        }
Beispiel #6
0
    public void GetDirectoryContents_CanEnumerateExistingFolders()
    {
        // Arrange
        var assembly = new TestAssembly(
            TestEntry.Directory("unused",
                                TestEntry.Directory("wwwroot",
                                                    TestEntry.File("jquery.validate.js"),
                                                    TestEntry.File("jquery.min.js"),
                                                    TestEntry.File("site.css"))));

        var provider = new ManifestEmbeddedFileProvider(assembly);

        var expectedContents = new[]
        {
            CreateTestFileInfo("jquery.validate.js"),
            CreateTestFileInfo("jquery.min.js"),
            CreateTestFileInfo("site.css")
        };

        // Act
        var contents = provider.GetDirectoryContents("wwwroot").ToArray();

        // Assert
        Assert.Equal(expectedContents, contents, FileInfoComparer.Instance);
    }
        /// <summary>
        /// Uses the cli.
        /// </summary>
        /// <param name="appBuilder">The application builder.</param>
        /// <param name="options">The application builder.</param>
        public static void UseBlocklyUI(this IApplicationBuilder appBuilder, BlocklyUIOptions options = null)
        {
            var manifestEmbeddedProvider =
                new ManifestEmbeddedFileProvider(Assembly.GetExecutingAssembly());
            var service = appBuilder.ApplicationServices;

            mapFile("blocklyFiles", manifestEmbeddedProvider, appBuilder);

            #region map options
            options = options ?? new BlocklyUIOptions();
            appBuilder.Map("/BlocklyOptions", app =>
            {
                app.Run(async cnt =>
                {
                    var data = options.StartBlocks?.Replace("`", @"\`");
                    var str  = $"var startBlocksStr=`{data}`;";
                    data     = options.HeaderName?.Replace("`", @"\`");
                    str     += $"{Environment.NewLine}var optHeaderName = `{data}`;";
                    data     = options.CustomBlocks?.Replace("`", @"\`");
                    str     += $"{Environment.NewLine}var customBlocks = `{data}`;";

                    str       += $"{Environment.NewLine}{options.RunTimeString?.Invoke(service)};";
                    var result = Encoding.UTF8.GetBytes(str);
                    var m      = new Memory <byte>(result);
                    await cnt.Response.BodyWriter.WriteAsync(m);
                });
            });
            #endregion
        }
Beispiel #8
0
        /// <summary>
        /// Enables static file serving using the resource assembly that contains static web resources for the
        /// web portion of the application. The resources must be embedded in an assembly that directly
        /// references the <c>Microsoft.Extensions.FileProviders.Embedded</c> NuGet package and specifies
        /// <c>&lt;GenerateEmbeddedFilesManifest&gt;true&lt;/GenerateEmbeddedFilesManifest&gt;</c>
        /// in the project settings.
        /// </summary>
        /// <param name="hostBuilder">The <see cref="IHostBuilder"/> to configure.</param>
        /// <param name="resourceAssembly">An assembly that contains static web assets as embedded resources.</param>
        public static IHostBuilder UseResourceAssembly(this IHostBuilder hostBuilder, Assembly resourceAssembly)
        {
            if (hostBuilder is null)
            {
                throw new ArgumentNullException(nameof(hostBuilder));
            }

            IFileProvider rootProvider = null;

            hostBuilder.ConfigureAppConfiguration((hostBuilderContext, configurationBuilder) =>
            {
                if (!configurationBuilder.Properties.TryGetValue(BlazorHybridDefaults.WebRootKey, out object webRoot))
                {
                    throw new KeyNotFoundException("WebRoot not set.");
                }

                rootProvider = new ManifestEmbeddedFileProvider(resourceAssembly, (string)webRoot);

                configurationBuilder.Properties[BlazorHybridDefaults.WebRootFileProvider] = rootProvider;
            });

            return(hostBuilder.ConfigureServices(serviceCollection =>
            {
                serviceCollection.AddSingleton <IFileProvider>(rootProvider);
            }));
        }
Beispiel #9
0
        public override void OnApplicationInitialization(CafApplicationContext context)
        {
            context.ServiceProvider.GetService <SchedulerCenter>()?.Init();//初始化Job
            var app = context.ServiceProvider.GetRequiredService <ObjectWrapper <IApplicationBuilder> >().Value;

            app.Use(async(context, next) =>
            {
                if (context.Request.Path.Value.ToLower().StartsWith("/jobui"))
                {
                    context.Request.Path = "/index.html";
                    await next();
                }
                else
                {
                    await next();
                }
            });

            var manifestEmbeddedProvider =
                new ManifestEmbeddedFileProvider(typeof(CafJobModule).Assembly, "UI");

            app.UseStaticFiles(new StaticFileOptions
            {
                FileProvider = manifestEmbeddedProvider
            });
        }
        private void StartWebViewCoreIfPossible()
        {
            if (!RequiredStartupPropertiesSet ||
                _webviewManager != null)
            {
                return;
            }
            if (NativeView == null)
            {
                throw new InvalidOperationException($"Can't start {nameof(BlazorWebView)} without native web view instance.");
            }

            var assetConfig = Services !.GetRequiredService <BlazorAssetsAssemblyConfiguration>() !;

            // We assume the host page is always in the root of the content directory, because it's
            // unclear there's any other use case. We can add more options later if so.
            var contentRootDir       = Path.GetDirectoryName(HostPage !) ?? string.Empty;
            var hostPageRelativePath = Path.GetRelativePath(contentRootDir, HostPage !);

            var fileProvider = new ManifestEmbeddedFileProvider(assetConfig.AssetsAssembly, root: contentRootDir);

            _webviewManager = new WebView2WebViewManager(new WinUIWebView2Wrapper(NativeView), Services !, MauiDispatcher.Instance, fileProvider, hostPageRelativePath);
            if (RootComponents != null)
            {
                foreach (var rootComponent in RootComponents)
                {
                    // Since the page isn't loaded yet, this will always complete synchronously
                    _ = rootComponent.AddToWebViewManagerAsync(_webviewManager);
                }
            }
            _webviewManager.Navigate("/");
        }
Beispiel #11
0
        private static void AddModuleWebAsset(this IMvcBuilder mvcBuilder, string moduleAssemblyFileName = @"*.Services.dll")
        {
            #region Contracts

            if (mvcBuilder == null)
            {
                throw new ArgumentException(nameof(mvcBuilder));
            }
            if (string.IsNullOrEmpty(moduleAssemblyFileName) == true)
            {
                throw new ArgumentException(nameof(moduleAssemblyFileName));
            }

            #endregion

            // ModuleAssembly
            var moduleAssemblyList = CLK.Reflection.Assembly.GetAllAssembly(moduleAssemblyFileName);
            if (moduleAssemblyList == null)
            {
                throw new InvalidOperationException($"{nameof(moduleAssemblyList)}=null");
            }

            // FileProviderList
            var fileProviderList = new List <IFileProvider>();
            foreach (var moduleAssembly in moduleAssemblyList)
            {
                // FileProvider
                IFileProvider fileProvider = null;
                try
                {
                    fileProvider = new ManifestEmbeddedFileProvider(moduleAssembly, @"wwwroot");
                }
                catch
                {
                    fileProvider = null;
                }

                // Add
                if (fileProvider != null)
                {
                    fileProviderList.Add(fileProvider);
                }
            }

            // Add
            mvcBuilder.Services.AddOptions <StaticFileOptions>().Configure <IWebHostEnvironment>((options, hostEnvironment) =>
            {
                // FileProvider
                if (hostEnvironment.WebRootFileProvider != null)
                {
                    fileProviderList.Insert(0, hostEnvironment.WebRootFileProvider);
                }

                // Attach
                options.FileProvider = new CompositeFileProvider
                                       (
                    fileProviderList
                                       );
            });
        }
        /// <summary>
        /// Enable the KafkaFlow dashboard
        /// </summary>
        /// <param name="app">Instance of <see cref="IApplicationBuilder"/></param>
        /// <returns></returns>
        public static IApplicationBuilder UseKafkaFlowDashboard(this IApplicationBuilder app)
        {
            app.Map(
                "/kafka-flow",
                builder =>
            {
                var provider = new ManifestEmbeddedFileProvider(
                    Assembly.GetAssembly(typeof(ApplicationBuilderExtensions)),
                    "ClientApp/dist");

                builder.UseStaticFiles(new StaticFileOptions {
                    FileProvider = provider
                });

                builder.Run(
                    async context =>
                {
                    if (context.Request.Path == "/" || context.Request.Path == string.Empty)
                    {
                        await context.Response.SendFileAsync(provider.GetFileInfo("index.html"));
                    }
                });
            });

            return(app);
        }
Beispiel #13
0
        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            else
            {
                app.UseExceptionHandler("/Home/Error");
                app.UseHsts();
            }

            app.UseHttpsRedirection();
            app.UseStaticFiles();

            //
            //ManifestEmbeddedFileProvider
            //IFileProvider fileProvider = new EmbeddedFileProvider(Assembly.GetEntryAssembly());
            IFileProvider fileProvider = new ManifestEmbeddedFileProvider(Assembly.GetEntryAssembly());

            app.UseStaticFiles(new StaticFileOptions {
                FileProvider = fileProvider
            });

            app.UseCookiePolicy();

            app.UseMvc(routes =>
            {
                routes.MapRoute(
                    name: "default",
                    template: "{controller=Home}/{action=Index}/{id?}");
            });
        }
        private static void mapStorage(IApplicationBuilder appBuilder)
        {
            var manifestEmbeddedProvider =
                new ManifestEmbeddedFileProvider(Assembly.GetExecutingAssembly());

            appBuilder.Map("/blocklyStorage", app =>
            {
                app.Run(async cnt =>
                {
                    cnt.Response.ContentType = "application/javascript";

                    string nameFile = "extensions/SaveToSqliteStorage.js";

                    var f = manifestEmbeddedProvider.GetFileInfo("blocklyFiles/" + nameFile);

                    using var stream = new MemoryStream();
                    using var cs     = f.CreateReadStream();
                    byte[] buffer    = new byte[2048]; // read in chunks of 2KB
                    int bytesRead;
                    while ((bytesRead = cs.Read(buffer, 0, buffer.Length)) > 0)
                    {
                        stream.Write(buffer, 0, bytesRead);
                    }
                    byte[] result = stream.ToArray();
                    var m         = new ReadOnlyMemory <byte>(result);
                    await cnt.Response.BodyWriter.WriteAsync(m);
                });
            });
        }
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.Configure <CookiePolicyOptions>(options =>
            {
                // This lambda determines whether user consent for non-essential cookies is needed for a given request.
                options.CheckConsentNeeded    = context => true;
                options.MinimumSameSitePolicy = SameSiteMode.None;
            });

            services.AddDbContext <ArchivesDbContext>(options =>
                                                      options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
            services.AddScoped <IMediaRecordCommentsRepository, MediaRecordCommentsRepository>();
            services.AddScoped <IOrderRepository, OrderRepository>();
            //services.AddArchiveWebSitesCoreLibrary();
            services.AddScoped <ShoppingCart>(sp => ShoppingCart.GetCart(sp));
            services.AddHttpContextAccessor();
            services.AddSession(opts =>
            {
                opts.Cookie.IsEssential = true; // make the session cookie Essential
            });

            var coreAssembly = AppDomain.CurrentDomain.GetAssemblies()
                               .SingleOrDefault(assembly => assembly.GetName().Name == "CE.ArchiveWebSites.Core");
            var filesProvider = new ManifestEmbeddedFileProvider(coreAssembly);

            services.AddControllersWithViews()
            .AddApplicationPart(coreAssembly);
        }
Beispiel #16
0
        private static ImmutableList <QuestionModel> Init()
        {
            var cfg = new Configuration()
            {
                Encoding        = Encoding.UTF8,
                HasHeaderRecord = false,
                Delimiter       = ",",
                Quote           = '"',
            };

            var qm = new List <QuestionModel>();
            var id = 1;

            var fp = new ManifestEmbeddedFileProvider(typeof(StaticQuestionFactory).Assembly);
            var fi = fp.GetFileInfo("questions.csv");

            using (var fs = fi.CreateReadStream())
                using (var sr = new StreamReader(fs, cfg.Encoding)) {
                    var cr = new CsvReader(sr, cfg);
                    while (cr.Read())
                    {
                        qm.Add(new QuestionModel {
                            Id            = id++,
                            Question      = cr.GetField <string>(0),
                            YesConclusion = cr.GetField <string>(1),
                            NoConclusion  = cr.GetField <string>(2),
                        });
                    }
                }

            return(qm.ToImmutableList());
        }
Beispiel #17
0
        private IActionResult GetFile(string fileName, string downloadName = null, string contentType = null)
        {
            var fp     = new ManifestEmbeddedFileProvider(typeof(StaticQuestionFactory).Assembly);
            var fi     = fp.GetFileInfo(fileName);
            var stream = fi.CreateReadStream();

            return(File(stream, contentType ?? "application/vnd.android.package-archive", downloadName ?? fileName));
        }
Beispiel #18
0
        private static WebApplication BuildWebApplication(
            Application application,
            string[] args,
            ILogEventSink?sink)
        {
            var builder = WebApplication.CreateBuilder(args);

            // Logging for this application
            builder.Host.UseSerilog((context, configuration) =>
            {
                configuration
                .MinimumLevel.Verbose()
                .Filter.ByExcluding(Matching.FromSource("Microsoft.AspNetCore"))
                .Filter.ByExcluding(Matching.FromSource("Microsoft.Extensions"))
                .Filter.ByExcluding(Matching.FromSource("Microsoft.Hosting"))
                .Enrich
                .FromLogContext()
                .WriteTo
                .Console();

                if (sink is object)
                {
                    configuration.WriteTo.Sink(sink, LogEventLevel.Verbose);
                }
            });

            builder.Services.AddRazorPages(o => o.RootDirectory = "/Dashboard/Pages");

            builder.Services.AddServerSideBlazor();

            builder.Services.AddOptions <StaticFileOptions>()
            .PostConfigure(o =>
            {
                var fileProvider = new ManifestEmbeddedFileProvider(typeof(TyeHost).Assembly, "wwwroot");

                // Make sure we don't remove the existing file providers (blazor needs this)
                o.FileProvider = new CompositeFileProvider(o.FileProvider, fileProvider);
            });

            builder.Services.AddCors(
                options =>
            {
                options.AddPolicy(
                    "default",
                    policy =>
                {
                    policy
                    .AllowAnyOrigin()
                    .AllowAnyHeader()
                    .AllowAnyMethod();
                });
            });

            builder.Services.AddSingleton(application);
            var app = builder.Build();

            return(app);
        }
        public static IFileInfo GetFileInfo(Assembly assembly, string fileName)
        {
            var manifestEmbeddedProvider =
                new ManifestEmbeddedFileProvider(assembly);

            var fileInfo = manifestEmbeddedProvider.GetFileInfo(fileName);

            return(fileInfo);
        }
Beispiel #20
0
        /// <summary>
        /// Used to create <see cref="StaticFileOptions"/> for serving Gemstone.Web embedded javascript and css stylesheets.
        /// </summary>
        /// <returns><see cref="StaticFileOptions"/></returns>
        public static StaticFileOptions StaticFileEmbeddedResources()
        {
            ManifestEmbeddedFileProvider embeddedFileProvider = new ManifestEmbeddedFileProvider(Assembly.GetExecutingAssembly(), "Shared");

            return(new StaticFileOptions()
            {
                FileProvider = embeddedFileProvider,
                RequestPath = new PathString("/@Gemstone")
            });
        }
        public static IConfigurationBuilder AddTestConfigurationSources(this IConfigurationBuilder builder)
        {
            var fileProvider = new ManifestEmbeddedFileProvider(typeof(ConfigurationBuilderExtensions).Assembly);

            builder
            .AddJsonFile(fileProvider, "appsettings.Testing.json", optional: false, reloadOnChange: false)
            .AddUserSecrets(typeof(ConfigurationBuilderExtensions).Assembly)
            .AddEnvironmentVariables();

            return(builder);
        }
Beispiel #22
0
        private void SaveEmbeddedFilesToTempFolder(params string[] embeddedFileNames)
        {
            var executingAssembly    = Assembly.GetExecutingAssembly();
            var embeddedFileProvider = new ManifestEmbeddedFileProvider(executingAssembly);

            foreach (var embeddedFileName in embeddedFileNames)
            {
                using var reader = embeddedFileProvider.GetFileInfo(embeddedFileName).CreateReadStream();
                using var writer = new StreamWriter(Path.Combine(CollectionFolder, Path.GetFileName(embeddedFileName)));
                reader.CopyTo(writer.BaseStream);
            }
        }
        public void PostConfigure(string name, StaticFileOptions options)
        {
            options.ContentTypeProvider = options.ContentTypeProvider ?? new FileExtensionContentTypeProvider();
            if (options.FileProvider == null && _environment.WebRootFileProvider == null)
            {
                throw new InvalidOperationException("Missing FileProvider.");
            }
            options.FileProvider = options.FileProvider ?? _environment.WebRootFileProvider;
            var filesProvider = new ManifestEmbeddedFileProvider(GetType().Assembly, "pages");

            options.FileProvider = new CompositeFileProvider(options.FileProvider, filesProvider);
        }
Beispiel #24
0
        // *******************************************************************
        // Constructors.
        // *******************************************************************

        #region Constructors

        /// <summary>
        /// This constructor creates a new instance of the <see cref="ManifestEmbeddedFileProviderEx"/>
        /// class.
        /// </summary>
        /// <param name="assembly">The assembly to use with the provider.</param>
        public ManifestEmbeddedFileProviderEx(
            Assembly assembly
            )
        {
            // Validate the parameters before attempting to use them.
            Guard.Instance().ThrowIfNull(assembly, nameof(assembly));

            // Create the innder provider.
            InnerProvider = new ManifestEmbeddedFileProvider(
                assembly
                );
        }
Beispiel #25
0
        public void PostConfigure(string name, StaticFileOptions options)
        {
            options.ContentTypeProvider = options.ContentTypeProvider ?? new FileExtensionContentTypeProvider();
            if (options.FileProvider == null && _environment.WebRootFileProvider == null)
            {
                return;
            }

            options.FileProvider = options.FileProvider ?? _environment.WebRootFileProvider;

            var filesProvider = new ManifestEmbeddedFileProvider(GetType().Assembly, "wwwroot");

            options.FileProvider = new CompositeFileProvider(options.FileProvider, filesProvider);
        }
Beispiel #26
0
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);

            #region snippet1
            var physicalProvider         = _env.ContentRootFileProvider;
            var manifestEmbeddedProvider =
                new ManifestEmbeddedFileProvider(Assembly.GetEntryAssembly());
            var compositeProvider =
                new CompositeFileProvider(physicalProvider, manifestEmbeddedProvider);

            services.AddSingleton <IFileProvider>(compositeProvider);
            #endregion
        }
Beispiel #27
0
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddRazorPages();

            #region snippet1
            var physicalProvider         = _env.ContentRootFileProvider;
            var manifestEmbeddedProvider =
                new ManifestEmbeddedFileProvider(typeof(Program).Assembly);
            var compositeProvider =
                new CompositeFileProvider(physicalProvider, manifestEmbeddedProvider);

            services.AddSingleton <IFileProvider>(compositeProvider);
            #endregion
        }
Beispiel #28
0
        public void PostConfigure(string name, StaticFileOptions options)
        {
            // Basic initialization in case the options weren't initialized by any other component
            options.ContentTypeProvider = options.ContentTypeProvider ?? new FileExtensionContentTypeProvider();
            if (options.FileProvider == null && _environment.WebRootFileProvider == null)
            {
                throw new InvalidOperationException("Missing FileProvider.");
            }
            options.FileProvider = options.FileProvider ?? _environment.WebRootFileProvider;
            // Add our provider
            var filesProvider = new ManifestEmbeddedFileProvider(GetType().Assembly, "wwwroot");

            options.FileProvider = new CompositeFileProvider(options.FileProvider, filesProvider);
        }
Beispiel #29
0
        /// <summary>
        /// Registers a <see cref="CompositeFileProvider"/> for each dynamically loaded assembly.
        /// </summary>
        void RegisterDynamicLibariesStaticFiles(IWebHostEnvironment env)
        {
            IFileProvider FileProvider;

            foreach (Assembly A in _dynamicallyLoadedLibraries)
            {
                // create a "web root" file provider for the embedded static files found on wwwroot folder
                FileProvider = new ManifestEmbeddedFileProvider(A, "wwwroot");

                // register a new composite provider containing
                // the old web root file provider
                // and the new one we just created
                env.WebRootFileProvider = new CompositeFileProvider(env.WebRootFileProvider, FileProvider);
            }
        }
Beispiel #30
0
        // This method gets called by the runtime. Use this method to add services to the container.
        // For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddRazorPages();
            services.AddServerSideBlazor();

            services.AddBlazoredModal();

            services.AddOptions <StaticFileOptions>()
            .PostConfigure(o =>
            {
                var fileProvider = new ManifestEmbeddedFileProvider(typeof(Startup).Assembly, "wwwroot");

                // Make sure we don't remove the existing file providers (blazor needs this)
                o.FileProvider = new CompositeFileProvider(o.FileProvider, fileProvider);
            });
        }