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);
        }
Example #2
0
 public static IServiceCollection AddModularity(this IServiceCollection services)
 {
     ModuleLoader.Configure(services);
     return(services);
 }
Example #3
0
        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);
        }