-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathStartup.cs
79 lines (68 loc) · 3.84 KB
/
Startup.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
using DevExpress.AspNetCore;
using DevExpress.DashboardAspNetCore;
using DevExpress.DashboardCommon;
using DevExpress.DashboardWeb;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.FileProviders;
using Microsoft.Extensions.Hosting;
using System;
using WebDashboardDataSources.Configuration;
namespace WebDashboardDataSources {
public class Startup {
public Startup(IConfiguration configuration, IWebHostEnvironment hostingEnvironment) {
Configuration = configuration;
FileProvider = hostingEnvironment.ContentRootFileProvider;
DashboardExportSettings.CompatibilityMode = DashboardExportCompatibilityMode.Restricted;
}
public IFileProvider FileProvider { get; }
public IConfiguration Configuration { get; }
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services) {
services.AddMvc();
services.AddScoped<DashboardConfigurator>((IServiceProvider serviceProvider) => {
DashboardConfigurator configurator = new DashboardConfigurator();
// Create and configure a dashboard storage.
DashboardFileStorage dashboardFileStorage = new DashboardFileStorage(FileProvider.GetFileInfo("Data/Dashboards").PhysicalPath);
configurator.SetDashboardStorage(dashboardFileStorage);
// Create and configure a data source storage.
DataSourceInMemoryStorage dataSourceStorage = new DataSourceInMemoryStorage();
SqlDataSourceConfigurator.ConfigureDataSource(dataSourceStorage);
ExcelDataSourceConfigurator.ConfigureDataSource(configurator, dataSourceStorage, FileProvider);
ObjectDataSourceConfigurator.ConfigureDataSource(configurator, dataSourceStorage);
EFDataSourceConfigurator.ConfigureDataSource(dataSourceStorage);
JsonDataSourceConfigurator.ConfigureDataSource(configurator, dataSourceStorage, FileProvider);
ExtractDataSourceConfigurator.ConfigureDataSource(configurator, dataSourceStorage, FileProvider);
OlapDataSourceConfigurator.ConfigureDataSource(configurator, dataSourceStorage);
XpoDataSourceConfigurator.ConfigureDataSource(dataSourceStorage);
configurator.SetDataSourceStorage(dataSourceStorage);
// Uncomment the next line to allow users to create new data sources based on predefined connection strings.
// configurator.SetConnectionStringsProvider(new DashboardConnectionStringsProvider(Configuration));
return configurator;
});
services.AddDevExpressControls();
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env) {
app.UseDevExpressControls();
if(env.IsDevelopment()) {
app.UseDeveloperExceptionPage();
}
else {
app.UseExceptionHandler("/Home/Error");
}
app.UseStaticFiles();
app.UseRouting();
app.UseEndpoints(endpoints => {
// Map dashboard routes.
endpoints.MapDashboardRoute("api/dashboard", "DefaultDashboard");
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
endpoints.MapRazorPages();
});
}
}
}