public static IMvcBuilder AddModules(this IMvcBuilder services, params string[] modulePaths) { var loader = new ModuleLoader(modulePaths); loader.Configure(services.Services); foreach (var module in loader.GetModules()) { services.AddApplicationPart(module.GetType().Assembly); } return(services); }
public static IServiceCollection AddModularity(this IServiceCollection services) { ModuleLoader.Configure(services); return(services); }
public static IApplicationBuilder UseMultitenancy(this IApplicationBuilder app) { var services = app.ApplicationServices; var env = services.GetRequiredService <IHostingEnvironment>(); // cookie app.UseCookiePolicy(); // use webapi result to request. app.UseMiddleware <ExceptionMiddleware>(); //app.UseHttpsRedirection(); app.UseStaticFiles(); app.UseStaticFiles(new StaticFileOptions { ContentTypeProvider = new FileExtensionContentTypeProvider(new Dictionary <string, string> { { ".json", "application/json" }, { ".apk", "application/vnd.android.package-archive" }, { ".nupkg", "application/zip" }, { ".exe", "application/octet-stream" } }) }); app.UseStaticFiles(new StaticFileOptions { FileProvider = new PhysicalFileProvider(App.GetLocalPath("logs", true)), RequestPath = new PathString("/logs") }); app.UseStaticFiles(new StaticFileOptions { FileProvider = new PhysicalFileProvider(App.GetLocalPath("uploads", true)), RequestPath = new PathString("/uploads") }); // use multitenant app.UseMiddleware <TenantContainerMiddleware>(); // use multitenant route app.UseMiddleware <TenantRouterMiddleware>(); // use mvc app.UseMvc(routes => { // use internal/core modules ModuleLoader.Configure(app, routes, services); routes.MapRoute( name: "default", template: "{controller=Home}/{action=Index}/{id?}" ); routes.MapRoute( name: "areas", template: "{area:exists}/{controller=Home}/{action=Index}/{id?}" ); }); return(app); }