public static IMvcBuilder AddModularityApplicationParts(this IMvcBuilder mvcBuilder) { var modularity = ModularityBuilder.Get(); foreach (var area in modularity.Areas) { foreach (ModularityModule module in area.Modules) { var partFactory = ApplicationPartFactory.GetApplicationPartFactory(module.Assembly); foreach (var part in partFactory.GetApplicationParts(module.Assembly)) { mvcBuilder.PartManager.ApplicationParts.Add(part); } var relatedAssemblies = RelatedAssemblyAttribute.GetRelatedAssemblies(module.Assembly, throwOnError: false); foreach (var relatedAssembly in relatedAssemblies) { partFactory = ApplicationPartFactory.GetApplicationPartFactory(relatedAssembly); foreach (var part in partFactory.GetApplicationParts(relatedAssembly)) { mvcBuilder.PartManager.ApplicationParts.Add(part); } } } } return(mvcBuilder); }
public static IServiceCollection AddModularityConfigureServices(this IServiceCollection services) { var startupsTempory = new List <IModularityStartup>(); var modularity = ModularityBuilder.Get(); foreach (var area in modularity.Areas) { foreach (var module in area.Modules) { var startupType = module.Assembly.GetTypes() .FirstOrDefault(t => typeof(IModularityStartup).IsAssignableFrom(t)); if ((startupType != null) && (startupType != typeof(IModularityStartup))) { var startupInstance = (IModularityStartup)Activator.CreateInstance(startupType); startupsTempory.Add(startupInstance); } } } var startups = startupsTempory.OrderBy(s => s.Order).ToList(); foreach (var startup in startups) { services.AddSingleton(typeof(IModularityStartup), startup); startup.ConfigureServices(services); } return(services); }
public static void UseModularityStaticFiles(this IApplicationBuilder app, string requestPath = "/wwwroot") { if (String.IsNullOrWhiteSpace(requestPath)) { throw new ArgumentNullException("Request Path"); } var modularity = ModularityBuilder.Get(); if (modularity.Areas.Count > 0) { var env = app.ApplicationServices.GetRequiredService <IWebHostEnvironment>(); foreach (var area in modularity.Areas) { foreach (var module in area.Modules) { if (env.IsDevelopment()) { app.UseStaticFiles(new StaticFileOptions() { FileProvider = new EmbeddedFileProvider(module.Assembly, module.Assembly.GetName().Name + ".wwwroot"), RequestPath = new PathString(requestPath), //??bu compress olayı problem oluşturabilir kontrol edeceğiz HttpsCompression = Microsoft.AspNetCore.Http.Features.HttpsCompressionMode.Compress, OnPrepareResponse = (context) => { var headers = context.Context.Response.GetTypedHeaders(); headers.CacheControl = new Microsoft.Net.Http.Headers.CacheControlHeaderValue { NoCache = true, NoStore = true, MaxAge = TimeSpan.FromDays(-1) }; } }); } else { app.UseStaticFiles(new StaticFileOptions() { FileProvider = new EmbeddedFileProvider(module.Assembly, module.Assembly.GetName().Name + ".wwwroot"), RequestPath = new PathString(requestPath), HttpsCompression = Microsoft.AspNetCore.Http.Features.HttpsCompressionMode.Compress, OnPrepareResponse = (context) => { var headers = context.Context.Response.GetTypedHeaders(); headers.CacheControl = new Microsoft.Net.Http.Headers.CacheControlHeaderValue { Public = true, MaxAge = TimeSpan.FromDays(30) }; } }); } } } } }
public static void UseModularityInfoEndpoints(this IEndpointRouteBuilder endpoints) { endpoints.MapGet("/apiks/modularity", async context => { var modularity = ModularityBuilder.Get(); var settings = new JsonSerializerSettings { ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore }; var data = JsonConvert.SerializeObject(modularity, Formatting.Indented, settings); await context.Response.WriteAsync(data); }); }
public static IServiceCollection AddModularityConventions(this IServiceCollection services) { services.Configure <MvcOptions>(options => { var modularity = ModularityBuilder.Get(); if (modularity == null) { throw new Exception("Modularity is null in AddMvc Options"); } options.Conventions.Add(new ModularityRoutePrefixConvention(modularity)); options.Conventions.Add(new ModularityAuthorizeByDefaultConvention(modularity)); }); return(services); }
public static IServiceCollection AddModularityEmbeddedFileProviders(this IServiceCollection services) { var modularity = ModularityBuilder.Get(); services.Configure <MvcRazorRuntimeCompilationOptions>(options => { foreach (var area in modularity.Areas) { foreach (ModularityModule module in area.Modules) { options.FileProviders.Add(new EmbeddedFileProvider(module.Assembly)); } } }); return(services); }
public static IMvcBuilder AddModularityRazorRuntimeCompilation(this IMvcBuilder mvcBuilder, bool isDevelopment) { if (isDevelopment) { mvcBuilder.AddRazorRuntimeCompilation(options => { var modularity = ModularityBuilder.Get(); foreach (var area in modularity.Areas) { foreach (ModularityModule module in area.Modules) { options.FileProviders.Add(new PhysicalFileProvider(module.PhysicalFileDirectory)); } } }); } return(mvcBuilder); }