using System.Linq; using System.Reflection; using System.IO; using Microsoft.AspNetCore.Authentication; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.Authorization; using Microsoft.AspNetCore.Mvc.Formatters; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using ASC.Api.Core; using ASC.Common.Logging; using ASC.Web.Api.Handlers; using ASC.Api.Core.Middleware; namespace ASC.Web.Api { public class Startup { public IConfiguration Configuration { get; } public Startup(IConfiguration configuration) { Configuration = configuration; } public void ConfigureServices(IServiceCollection services) { services.AddControllers() .AddNewtonsoftJson(s=> s.UseCamelCasing(true)) .AddXmlSerializerFormatters(); services.AddHttpContextAccessor(); services.AddAuthentication("cookie").AddScheme("cookie", a=> { }); var builder = services.AddMvc(config => { var policy = new AuthorizationPolicyBuilder().RequireAuthenticatedUser().Build(); config.Filters.Add(new TypeFilterAttribute(typeof(FormatFilter))); config.Filters.Add(new AuthorizeFilter(policy)); }); var assemblies = Directory.GetFiles(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "ASC*.dll") .Select(Assembly.LoadFrom) .Where(r => r.GetCustomAttribute() != null); foreach (var a in assemblies) { builder.AddApplicationPart(a); } services.AddLogManager(Configuration); } public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } app.UseCors(builder => builder .AllowAnyOrigin() .AllowAnyHeader() .AllowAnyMethod()); app.UseRouting(); app.UseResponseWrapper(); app.UseAuthentication(); app.UseEndpoints(endpoints => { endpoints.MapControllers(); }); } } }