public static void Main(string[] args) { Console.Title = "Dexterity Access Management API"; var builder = new ConfigurationBuilder().AddJsonFile("appsettings.json"); Configuration = builder.Build(); try { var settings = new KestrelConfiguration(); Configuration.GetSection("KestrelOptions").Bind(settings); Console.WriteLine(settings.Cors.AllowedHeaders); Console.WriteLine(settings.Cors.AllowedMethods); Console.WriteLine(settings.Cors.AllowedOrigins); var host = new WebHostBuilder() .UseKestrel(options => { if (settings.SslSettings != null) { options.Listen(IPAddress.Any, settings.Port, listenOptions => { listenOptions.UseHttps(settings.SslSettings.CertificatePath, settings.SslSettings.CertificatePassword); }); } else { options.Listen(IPAddress.Any, settings.Port); } }) .UseContentRoot(Directory.GetCurrentDirectory()) .UseIISIntegration() .UseStartup <Startup>() .Build(); host.Run(); } catch (Exception e) { Console.WriteLine(e.Message); Console.WriteLine(e.StackTrace); } }
public Startup(IHostingEnvironment env) { // 读取配置 var builder = new ConfigurationBuilder() .SetBasePath(env.ContentRootPath) .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true) .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true) .AddEnvironmentVariables(); _configuration = builder.Build(); // 生产模式, 且配置文件中有Kestrel节时监听https if (env.IsProduction()) { var kestrelConfiguration = new KestrelConfiguration(); _configuration.GetSection("Kestrel").Bind(kestrelConfiguration); if (!string.IsNullOrEmpty(kestrelConfiguration.ServerCertificatePath)) { _kestrelConfiguration = kestrelConfiguration; } } }
private static void SetupKestrel(KestrelServerOptions options) { KestrelConfiguration.Configure(options, webHostBuilderContext.HostingEnvironment, webHostBuilderContext.Configuration, 52532); }
public void ConfigureServices(IServiceCollection services) { services.AddDbContext <FontaineContext>(options => options.UseSqlServer(Configuration.GetConnectionString("SQLConnection"))); services.Configure <JwtIssuerOptions>(options => Configuration.GetSection("JwtIssuerOptions").Bind(options)); services.Configure <KestrelConfiguration>(options => Configuration.GetSection("KestrelOptions").Bind(options)); services.Configure <PrintingConfig>(options => Configuration.GetSection("Printing").Bind(options)); var sp = services.BuildServiceProvider(); KestrelConfiguration kestrelConfig = sp.GetService <IOptions <KestrelConfiguration> >().Value; JwtIssuerOptions jwtAppSettingOptions = sp.GetService <IOptions <JwtIssuerOptions> >().Value; ThermalLabel.LicenseKey = "TC6KYFLVC9VUP72M43LMGHGW592EP2W3Q8FF2BRMM3X9JFZHHYXQ"; ThermalLabel.LicenseOwner = "Dash Computer Products-Ultimate Edition-OEM Developer License"; services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) .AddJwtBearer(options => { //options.TokenValidationParameters = new TokenValidationParameters //{ // ValidateIssuerSigningKey = true, // IssuerSigningKey = new SymmetricSecurityKey(Encoding.ASCII // .GetBytes("Secure")), // ValidateIssuer = false, // ValidateAudience = false //}; options.RequireHttpsMetadata |= kestrelConfig.SslSettings != null; options.SaveToken = true; options.TokenValidationParameters = new TokenValidationParameters { ValidateIssuer = true, ValidIssuer = jwtAppSettingOptions.Issuer, ValidateAudience = true, ValidAudience = jwtAppSettingOptions.Audience, ValidateIssuerSigningKey = true, IssuerSigningKey = SigningKey, RequireExpirationTime = true, ValidateLifetime = true, ClockSkew = TimeSpan.Zero }; }); services.AddOptions(); services.Configure <JwtIssuerOptions>(options => { options.Issuer = jwtAppSettingOptions.Issuer; options.Audience = jwtAppSettingOptions.Audience; options.SigningCredentials = new SigningCredentials(SigningKey, SecurityAlgorithms.HmacSha256); }); services.AddCors(options => { if (kestrelConfig.Cors != null) { options.AddPolicy("Allow", builder => { builder .AllowCredentials() .WithHeaders(kestrelConfig.Cors.AllowedHeaders.Split(",")) .WithMethods(kestrelConfig.Cors.AllowedMethods.Split(",")) .WithOrigins(kestrelConfig.Cors.AllowedOrigins.Split(",")) .WithExposedHeaders("Location", "location"); }); } else { options.AddPolicy("Allow", builder => { builder.AllowAnyOrigin() .AllowAnyMethod() .AllowAnyHeader() .AllowCredentials() .WithExposedHeaders("Location"); }); } }); services.AddAutoMapper(); services.AddScoped <IAuthRepository, AuthRepository>(); services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1); }
private void AddCorsHeaders(HttpContext context, KestrelConfiguration config) { context.Response.Headers.Add("Access-Control-Allow-Origin", config.Cors.AllowedOrigins); context.Response.Headers.Add("Access-Control-Allow-Headers", config.Cors.AllowedHeaders); context.Response.Headers.Add("Access-Control-Allow-Methods", config.Cors.AllowedMethods); }