public static IServiceCollection AddOrchardMvc(this IServiceCollection services) { services .AddMvcCore(options => { options.Filters.Add(new ModelBinderAccessorFilter()); options.Filters.Add(typeof(AutoValidateAntiforgeryTokenAuthorizationFilter)); options.ModelBinderProviders.Insert(0, new CheckMarkModelBinderProvider()); }) .AddViews() .AddViewLocalization() .AddRazorViewEngine() .AddJsonFormatters(); services.AddScoped <IModelUpdaterAccessor, LocalModelBinderAccessor>(); services.AddTransient <IFilterProvider, DependencyFilterProvider>(); services.AddTransient <IMvcRazorHost, TagHelperMvcRazorHost>(); services.AddTransient <IApplicationModelProvider, ModuleAreaRouteConstraintApplicationModelProvider>(); services.Configure <RazorViewEngineOptions>(configureOptions: options => { var expander = new ModuleViewLocationExpander(); options.ViewLocationExpanders.Add(expander); var extensionLibraryService = services.BuildServiceProvider().GetService <IExtensionLibraryService>(); ((List <MetadataReference>)options.AdditionalCompilationReferences).AddRange(extensionLibraryService.MetadataReferences()); }); return(services); }
public IServiceProvider CreateContainer(ShellSettings settings, ShellBlueprint blueprint) { ServiceCollection serviceCollection = new ServiceCollection(); serviceCollection.AddScoped <IOrchardShell, DefaultOrchardShell>(); serviceCollection.AddScoped <IRouteBuilder, DefaultShellRouteBuilder>(); serviceCollection.AddInstance(settings); serviceCollection.AddInstance(blueprint.Descriptor); serviceCollection.AddInstance(blueprint); serviceCollection.AddMvc(); serviceCollection.Configure <RazorViewEngineOptions>(options => { var expander = new ModuleViewLocationExpander(); options.ViewLocationExpanders.Add(expander); }); var p = _serviceProvider.GetService <IOrchardLibraryManager>(); //serviceCollection.AddScoped<IActionSelector, DefaultActionSelectorTest>(); //serviceCollection.AddTransient<INestedProvider<ActionDescriptorProviderContext>, ControllerActionDescriptorProviderTest>(); serviceCollection.AddInstance <IAssemblyProvider>(new DefaultAssemblyProviderTest(p, _serviceProvider, _serviceProvider.GetService <IAssemblyLoaderContainer>())); foreach (var dependency in blueprint.Dependencies) { foreach (var interfaceType in dependency.Type.GetInterfaces() .Where(itf => typeof(IDependency).IsAssignableFrom(itf))) { Logger.Debug("Type: {0}, Interface Type: {1}", dependency.Type, interfaceType); if (typeof(ISingletonDependency).IsAssignableFrom(interfaceType)) { serviceCollection.AddSingleton(interfaceType, dependency.Type); } else if (typeof(IUnitOfWorkDependency).IsAssignableFrom(interfaceType)) { serviceCollection.AddScoped(interfaceType, dependency.Type); } else if (typeof(ITransientDependency).IsAssignableFrom(interfaceType)) { serviceCollection.AddTransient(interfaceType, dependency.Type); } else { serviceCollection.AddScoped(interfaceType, dependency.Type); } } } //foreach (var item in blueprint.Controllers) { // var serviceKeyName = (item.AreaName + "/" + item.ControllerName).ToLowerInvariant(); // var serviceKeyType = item.Type; // serviceCollection.AddScoped(serviceKeyType); //} return(BuildFallbackServiceProvider( serviceCollection, _serviceProvider)); }
public void ConfigureMvc(IMvcBuilder builder) { var serviceProvider = builder.Services.BuildServiceProvider(); var env = serviceProvider.GetRequiredService <IHostingEnvironment>(); var services = new ServiceCollection(); services.AddSingleton <IHostingEnvironment>(env); var startUp = new Startup(env); startUp.ConfigureServices(services); serviceProvider = services.BuildServiceProvider(); var loggerFactory = serviceProvider.GetRequiredService <ILoggerFactory>(); var app = new ApplicationBuilder(serviceProvider); startUp.Configure(app, loggerFactory); builder.AddRazorOptions(options => { var expander = new ModuleViewLocationExpander(); options.ViewLocationExpanders.Add(expander); var extensionLibraryService = services.BuildServiceProvider().GetService <IExtensionLibraryService>(); ((List <MetadataReference>)options.AdditionalCompilationReferences).AddRange(extensionLibraryService.MetadataReferences()); }); }
public static IServiceCollection AddOrchardMvc(this IServiceCollection services) { services .AddMvcCore(options => { options.Filters.Add(new ModelBinderAccessorFilter()); options.Conventions.Add(new ModuleAreaRouteConstraintConvention()); options.ModelBinders.Insert(0, new CheckMarkModelBinder()); }) .AddViews() .AddViewLocalization() .AddRazorViewEngine() .AddJsonFormatters(); services.AddScoped <IModelUpdaterAccessor, LocalModelBinderAccessor>(); services.AddTransient <IFilterProvider, DependencyFilterProvider>(); services.AddTransient <IMvcRazorHost, TagHelperMvcRazorHost>(); services.AddScoped <IAssemblyProvider, OrchardMvcAssemblyProvider>(); services.AddSingleton <ICompilationService, DefaultRoslynCompilationService>(); services.Configure <RazorViewEngineOptions>(options => { var expander = new ModuleViewLocationExpander(); options.ViewLocationExpanders.Add(expander); }); return(services); }
public static IServiceCollection AddOrchardMvc(this IServiceCollection services) { services .AddMvcCore(options => { options.Filters.Add(new ModelBinderAccessorFilter()); options.Conventions.Add(new ModuleAreaRouteConstraintConvention()); options.ModelBinderProviders.Insert(0, new CheckMarkModelBinderProvider()); }) .AddViews() .AddViewLocalization() .AddRazorViewEngine() .AddJsonFormatters(); services.AddMvcDnx(); services.AddScoped <IModelUpdaterAccessor, LocalModelBinderAccessor>(); services.AddTransient <IFilterProvider, DependencyFilterProvider>(); services.AddTransient <IMvcRazorHost, TagHelperMvcRazorHost>(); if (DnxPlatformServices.Default.LibraryManager != null) { var partManager = GetApplicationPartManager(services); var libraryManager = new OrchardLibraryManager(DnxPlatformServices.Default.LibraryManager); var provider = new OrchardMvcAssemblyProvider( libraryManager, DnxPlatformServices.Default.AssemblyLoaderContainer, new ExtensionAssemblyLoader( PlatformServices.Default.Application, DnxPlatformServices.Default.AssemblyLoadContextAccessor, PlatformServices.Default.Runtime, libraryManager)); foreach (var assembly in provider.CandidateAssemblies) { partManager.ApplicationParts.Add(new AssemblyPart(assembly)); } } services.AddSingleton <ICompilationService, DnxRoslynCompilationService>(); services.Configure <RazorViewEngineOptions>(configureOptions: options => { var expander = new ModuleViewLocationExpander(); options.ViewLocationExpanders.Add(expander); }); return(services); }
public IServiceProvider CreateContainer(ShellSettings settings, ShellBlueprint blueprint) { ServiceCollection serviceCollection = new ServiceCollection(); serviceCollection.AddScoped <IOrchardShell, DefaultOrchardShell>(); serviceCollection.AddScoped <IRouteBuilder, DefaultShellRouteBuilder>(); serviceCollection.AddInstance(settings); serviceCollection.AddInstance(blueprint.Descriptor); serviceCollection.AddInstance(blueprint); serviceCollection.AddScoped <ITypeActivator, TypeActivator>(); serviceCollection.AddMvc(); serviceCollection.Configure <RazorViewEngineOptions>(options => { var expander = new ModuleViewLocationExpander(); options.ViewLocationExpanders.Add(expander); }); foreach (var dependency in blueprint.Dependencies) { foreach (var interfaceType in dependency.Type.GetInterfaces() .Where(itf => typeof(IDependency).IsAssignableFrom(itf))) { Logger.Debug("Type: {0}, Interface Type: {1}", dependency.Type, interfaceType); serviceCollection.AddScoped(interfaceType, dependency.Type); if (typeof(ISingletonDependency).IsAssignableFrom(interfaceType)) { serviceCollection.AddSingleton(interfaceType, dependency.Type); } else if (typeof(IUnitOfWorkDependency).IsAssignableFrom(interfaceType)) { serviceCollection.AddScoped(interfaceType, dependency.Type); } else if (typeof(ITransientDependency).IsAssignableFrom(interfaceType)) { serviceCollection.AddTransient(interfaceType, dependency.Type); } } } return(BuildFallbackServiceProvider( serviceCollection, _serviceProvider)); }
/// <summary> /// Adds host level services. /// </summary> /// <param name="services"></param> /// <returns></returns> public static IServiceCollection AddThemingHost(this IServiceCollection services) { services.AddTransient <IMvcRazorHost, ShapeRazorHost>(); services.AddScoped <IModelUpdaterAccessor, LocalModelBinderAccessor>(); services.AddScoped <IFilterMetadata, ModelBinderAccessorFilter>(); services.Configure <RazorViewEngineOptions>(options => { options.FileProviders.Add(new ThemingFileProvider()); //var expander = new ThemeAwareViewLocationExpander(); var expander = new ModuleViewLocationExpander(); options.ViewLocationExpanders.Add(expander); }); services.AddScoped <IFeatureBuilderEvents, ThemeFeatureBuilderEvents>(); return(services); }
public static IServiceCollection AddOrchardMvc(this IServiceCollection services) { services .AddMvcCore() .AddViews() .AddRazorViewEngine(); services.AddScoped <IAssemblyProvider, OrchardMvcAssemblyProvider>(); services.AddSingleton <ICompilationService, DefaultRoslynCompilationService>(); services.Configure <RazorViewEngineOptions>(options => { var expander = new ModuleViewLocationExpander(); options.ViewLocationExpanders.Add(expander); }); return(services); }
public static IServiceCollection AddModuleServices(this IServiceCollection services, IConfiguration configuration, string manifestFileName, Action <MvcOptions> mvcSetupAction) { services.AddSingleton(new ShellFeature("Orchard.Hosting")); services.AddWebHost(); services.AddManifestDefinition(manifestFileName, "module"); services.AddExtensionLocation("Modules"); services .AddMvcCore(options => { options.Filters.Add(typeof(AutoValidateAntiforgeryTokenAuthorizationFilter)); options.ModelBinderProviders.Insert(0, new CheckMarkModelBinderProvider()); mvcSetupAction?.Invoke(options); }) .AddViews() .AddViewLocalization() .AddRazorViewEngine() .AddJsonFormatters(); services.AddTransient <IFilterProvider, DependencyFilterProvider>(); services.AddTransient <IApplicationModelProvider, ModuleAreaRouteConstraintApplicationModelProvider>(); services.Configure <RazorViewEngineOptions>(configureOptions: options => { var expander = new ModuleViewLocationExpander(); options.ViewLocationExpanders.Add(expander); var extensionLibraryService = services.BuildServiceProvider().GetService <IExtensionLibraryService>(); ((List <MetadataReference>)options.AdditionalCompilationReferences).AddRange(extensionLibraryService.MetadataReferences()); }); // Register the configuration object for modules to register options with it if (configuration != null) { services.AddSingleton <IConfiguration>(configuration); } // Register the list of services to be resolved later on services.AddSingleton(_ => services); return(services); }
public static IServiceCollection AddOrchardMvc(this IServiceCollection services) { services .AddMvcCore(options => { options.Filters.Add(new ModelBinderAccessorFilter()); options.ModelBinderProviders.Insert(0, new CheckMarkModelBinderProvider()); }) .AddViews() .AddViewLocalization() .AddRazorViewEngine() .AddJsonFormatters(); services.AddScoped <IModelUpdaterAccessor, LocalModelBinderAccessor>(); services.AddTransient <IFilterProvider, DependencyFilterProvider>(); services.AddTransient <IMvcRazorHost, TagHelperMvcRazorHost>(); services.AddTransient <IApplicationModelProvider, ModuleAreaRouteConstraintApplicationModelProvider>(); services.Configure <RazorViewEngineOptions>(configureOptions: options => { var expander = new ModuleViewLocationExpander(); options.ViewLocationExpanders.Add(expander); var extensionLibraryService = services.BuildServiceProvider().GetService <IExtensionLibraryService>(); var previous = options.CompilationCallback; options.CompilationCallback = (context) => { previous?.Invoke(context); context.Compilation = context.Compilation.AddReferences(extensionLibraryService.MetadataReferences()); }; }); services.AddSingleton <ICompilationService, DefaultRoslynCompilationService>(); return(services); }