// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { services.AddRazorPages(); services.AddMvcCore(config => { //IHttpRequestStreamReaderFactory readerFactory = services.BuildServiceProvider().GetRequiredService<IHttpRequestStreamReaderFactory>(); //config.ModelBinderProviders.Insert(0, new Microsoft.AspNetCore.Mvc.ModelBinding.Binders.BodyModelBinderProvider(config.InputFormatters, readerFactory)); //config.ModelBinderProviders.Insert(0, new QueryModelBinderProvider(container)); }) .AddViews() .AddApiExplorer() .AddNewtonsoftJson(); //.AddCors() /*.AddJsonFormatters() * .AddJsonOptions(options => { * options.SerializerSettings.Converters.Add(new RequestHandlerConverter<IRequest>(container)); * });*/ services.Configure <OWSData.Models.OWSInstanceLauncherOptions>(Configuration.GetSection(OWSData.Models.OWSInstanceLauncherOptions.SectionName)); services.Configure <OWSShared.Options.APIPathOptions>(Configuration.GetSection(OWSShared.Options.APIPathOptions.SectionName)); //owsInstanceLauncherOptions = new OWSData.Models.OWSInstanceLauncherOptions(); //Configuration.GetSection(OWSData.Models.OWSInstanceLauncherOptions.SectionName).Bind(owsInstanceLauncherOptions); var apiPathOptions = new OWSShared.Options.APIPathOptions(); Configuration.GetSection(OWSShared.Options.APIPathOptions.SectionName).Bind(apiPathOptions); services.AddHttpClient("OWSInstanceManagement", c => { c.BaseAddress = new Uri(apiPathOptions.InternalInstanceManagementApiURL); c.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); c.DefaultRequestHeaders.Add("User-Agent", "OWSInstanceLauncher"); c.DefaultRequestHeaders.Add("X-CustomerGUID", owsInstanceLauncherOptions.OWSAPIKey); }); services.AddSimpleInjector(container, options => { options.AddHostedService <TimedHostedService <IInstanceLauncherJob> >(); options.AddHostedService <TimedHostedService <IServerHealthMonitoringJob> >(); }); InitializeContainer(services); }
// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { //services.AddMvc(); services.AddMvcCore(config => { config.EnableEndpointRouting = false; //IHttpRequestStreamReaderFactory readerFactory = services.BuildServiceProvider().GetRequiredService<IHttpRequestStreamReaderFactory>(); //config.ModelBinderProviders.Insert(0, new Microsoft.AspNetCore.Mvc.ModelBinding.Binders.BodyModelBinderProvider(config.InputFormatters, readerFactory)); //config.ModelBinderProviders.Insert(0, new QueryModelBinderProvider(container)); }) .AddViews() .AddApiExplorer() //.AddCors() //.AddJsonFormatters() /*.AddJsonOptions(options => { * options.SerializerSettings.Converters.Add(new RequestHandlerConverter<IRequest>(container)); * })*/ .AddNewtonsoftJson(o => { //o.SerializerSettings.Converters.Add(new RequestHandlerConverter<IRequest>(container)); }) .SetCompatibilityVersion(CompatibilityVersion.Version_3_0); services.AddSimpleInjector(container, options => { options.AddAspNetCore() .AddControllerActivation() .AddViewComponentActivation(); //.AddPageModelActivation() //.AddTagHelperActivation(); }); services.AddSwaggerGen(c => { c.SwaggerDoc("v1", new OpenApiInfo { Title = "Open World Server Authentication API", Version = "v1" }); c.AddSecurityDefinition("X-CustomerGUID", new OpenApiSecurityScheme() { Description = "Authorization header using the X-CustomerGUID scheme", Name = "X-CustomerGUID", In = ParameterLocation.Header }); c.OperationFilter <SwaggerSecurityRequirementsDocumentFilter>(); var filePath = Path.Combine(System.AppContext.BaseDirectory, "OWSPublicAPI.xml"); c.IncludeXmlComments(filePath); }); var apiPathOptions = new OWSShared.Options.APIPathOptions(); Configuration.GetSection(OWSShared.Options.APIPathOptions.SectionName).Bind(apiPathOptions); services.AddHttpClient("OWSInstanceManagement", c => { c.BaseAddress = new Uri(apiPathOptions.InternalInstanceManagementApiURL); c.DefaultRequestHeaders.Add("Accept", "application/json"); c.DefaultRequestHeaders.Add("User-Agent", "OWSPublicAPI"); }); services.Configure <OWSShared.Options.PublicAPIOptions>(Configuration.GetSection(OWSShared.Options.PublicAPIOptions.SectionName)); services.Configure <OWSShared.Options.APIPathOptions>(Configuration.GetSection(OWSShared.Options.APIPathOptions.SectionName)); services.Configure <OWSData.Models.StorageOptions>(Configuration.GetSection(OWSData.Models.StorageOptions.SectionName)); services.Configure <OWSExternalLoginProviders.Options.ExternalLoginProviderOptions>(Configuration.GetSection(OWSExternalLoginProviders.Options.ExternalLoginProviderOptions.SectionName)); InitializeContainer(services); }