private static void AddStaticFiles(SeedBuilder builder) { builder.Configure((app, routes, serviceProvider) => { var env = serviceProvider.GetRequiredService <IHostingEnvironment>(); IFileProvider fileProvider; // 开发环境下需要直接读取模块目录下的文件 if (env.IsDevelopment()) { var fileProviders = new List <IFileProvider> { new ModuleProjectStaticFileProvider(env), new ModuleEmbeddedStaticFileProvider(env) }; fileProvider = new CompositeFileProvider(fileProviders); } else { fileProvider = new ModuleEmbeddedStaticFileProvider(env); } app.UseStaticFiles(new StaticFileOptions { RequestPath = "", FileProvider = fileProvider }); }); }
/// <summary> /// Adds tenant level configuration to serve static files from modules /// </summary> private static void AddStaticFiles(OrchardCoreBuilder builder) { builder.Configure((app, routes, serviceProvider) => { var env = serviceProvider.GetRequiredService <IHostingEnvironment>(); var appContext = serviceProvider.GetRequiredService <IApplicationContext>(); IFileProvider fileProvider; if (env.IsDevelopment()) { var fileProviders = new List <IFileProvider>(); fileProviders.Add(new ModuleProjectStaticFileProvider(appContext)); fileProviders.Add(new ModuleEmbeddedStaticFileProvider(appContext)); fileProvider = new CompositeFileProvider(fileProviders); } else { fileProvider = new ModuleEmbeddedStaticFileProvider(appContext); } var options = serviceProvider.GetRequiredService <IOptions <StaticFileOptions> >().Value; options.RequestPath = ""; options.FileProvider = fileProvider; app.UseStaticFiles(options); }); }
/// <summary> /// Adds tenant level configuration to serve static files from modules /// </summary> private static void AddStaticFiles(BlocksCoreBuilder builder) { builder.Configure((app, routes, serviceProvider) => { var env = serviceProvider.GetRequiredService <IHostingEnvironment>(); var appContext = serviceProvider.GetRequiredService <IApplicationContext>(); IFileProvider fileProvider; if (env.IsDevelopment()) { var fileProviders = new List <IFileProvider>(); fileProviders.Add(new ModuleProjectStaticFileProvider(appContext)); fileProviders.Add(new ModuleEmbeddedStaticFileProvider(appContext)); fileProvider = new CompositeFileProvider(fileProviders); } else { fileProvider = new ModuleEmbeddedStaticFileProvider(appContext); } var options = serviceProvider.GetRequiredService <IOptions <StaticFileOptions> >().Value; options.RequestPath = ""; options.FileProvider = fileProvider; // Cache static files for a year as they are coming from embedded resources and should not vary options.OnPrepareResponse = ctx => { ctx.Context.Response.Headers[HeaderNames.CacheControl] = "max-age=" + (int)TimeSpan.FromDays(365).TotalSeconds; }; app.UseStaticFiles(options); }); }
public static IApplicationBuilder UseStaticFilesModules(this IApplicationBuilder app) { var env = app.ApplicationServices.GetRequiredService <IHostingEnvironment>(); IFileProvider fileProvider; if (env.IsDevelopment()) { var fileProviders = new List <IFileProvider>(); fileProviders.Add(new ModuleProjectStaticFileProvider(env)); fileProviders.Add(new ModuleEmbeddedStaticFileProvider(env)); fileProvider = new CompositeFileProvider(fileProviders); } else { fileProvider = new ModuleEmbeddedStaticFileProvider(env); } app.UseStaticFiles(new StaticFileOptions { RequestPath = "", FileProvider = fileProvider }); return(app); }
/// <summary> /// Adds tenant level configuration to serve static files from modules /// </summary> private static void AddStaticFiles(OrchardCoreBuilder builder) { builder.ConfigureServices(services => { services.AddSingleton <IModuleStaticFileProvider>(serviceProvider => { var env = serviceProvider.GetRequiredService <IHostEnvironment>(); var appContext = serviceProvider.GetRequiredService <IApplicationContext>(); IModuleStaticFileProvider fileProvider; if (env.IsDevelopment()) { var fileProviders = new List <IStaticFileProvider> { new ModuleProjectStaticFileProvider(appContext), new ModuleEmbeddedStaticFileProvider(appContext) }; fileProvider = new ModuleCompositeStaticFileProvider(fileProviders); } else { fileProvider = new ModuleEmbeddedStaticFileProvider(appContext); } return(fileProvider); }); services.AddSingleton <IStaticFileProvider>(serviceProvider => { return(serviceProvider.GetRequiredService <IModuleStaticFileProvider>()); }); }); builder.Configure((app, routes, serviceProvider) => { var fileProvider = serviceProvider.GetRequiredService <IModuleStaticFileProvider>(); var options = serviceProvider.GetRequiredService <IOptions <StaticFileOptions> >().Value; options.RequestPath = ""; options.FileProvider = fileProvider; var shellConfiguration = serviceProvider.GetRequiredService <IShellConfiguration>(); var cacheControl = shellConfiguration.GetValue("StaticFileOptions:CacheControl", "public, max-age=2592000, s-max-age=31557600"); // Cache static files for a year as they are coming from embedded resources and should not vary options.OnPrepareResponse = ctx => { ctx.Context.Response.Headers[HeaderNames.CacheControl] = cacheControl; }; app.UseStaticFiles(options); }); }
/// <summary> /// Adds tenant level configuration to serve static files from modules /// </summary> private static void AddStaticFiles(OrchardCoreBuilder builder) { builder.ConfigureServices(services => { services.AddSingleton <IModuleStaticFileProvider>(serviceProvider => { var env = serviceProvider.GetRequiredService <IHostEnvironment>(); var appContext = serviceProvider.GetRequiredService <IApplicationContext>(); IModuleStaticFileProvider fileProvider; if (env.IsDevelopment()) { var fileProviders = new List <IStaticFileProvider> { new ModuleProjectStaticFileProvider(appContext), new ModuleEmbeddedStaticFileProvider(appContext) }; fileProvider = new ModuleCompositeStaticFileProvider(fileProviders); } else { fileProvider = new ModuleEmbeddedStaticFileProvider(appContext); } return(fileProvider); }); services.AddSingleton <IStaticFileProvider>(serviceProvider => { return(serviceProvider.GetRequiredService <IModuleStaticFileProvider>()); }); }); builder.Configure((app, routes, serviceProvider) => { var fileProvider = serviceProvider.GetRequiredService <IModuleStaticFileProvider>(); var shellConfiguration = serviceProvider.GetRequiredService <IShellConfiguration>(); // Cache static files for a year as they are coming from embedded resources and should not vary. var cacheControl = shellConfiguration.GetValue("StaticFileOptions:CacheControl", $"public, max-age={TimeSpan.FromDays(30).TotalSeconds}, s-maxage={TimeSpan.FromDays(365.25).TotalSeconds}"); // Use the current options values but without mutating the resolved instance. var options = serviceProvider.GetRequiredService <IOptions <StaticFileOptions> >().Value; options = new StaticFileOptions { RequestPath = String.Empty, FileProvider = fileProvider, RedirectToAppendTrailingSlash = options.RedirectToAppendTrailingSlash, ContentTypeProvider = options.ContentTypeProvider, DefaultContentType = options.DefaultContentType, ServeUnknownFileTypes = options.ServeUnknownFileTypes, HttpsCompression = options.HttpsCompression, OnPrepareResponse = ctx => { ctx.Context.Response.Headers[HeaderNames.CacheControl] = cacheControl; }, }; app.UseStaticFiles(options); }); }