Startup.cs 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. using Microsoft.AspNetCore.Authentication.JwtBearer;
  2. using Microsoft.AspNetCore.Builder;
  3. using Microsoft.AspNetCore.Hosting;
  4. using Microsoft.EntityFrameworkCore;
  5. using Microsoft.Extensions.Configuration;
  6. using Microsoft.Extensions.DependencyInjection;
  7. using Microsoft.Extensions.Hosting;
  8. using Microsoft.IdentityModel.Tokens;
  9. using Newtonsoft.Json;
  10. using Quartz;
  11. using Quartz.Impl;
  12. using System;
  13. using System.Text;
  14. using System.Text.Json.Serialization;
  15. using wispro.sp.api.Job;
  16. using wispro.sp.api.Services;
  17. namespace wispro.sp.api
  18. {
  19. public class Startup
  20. {
  21. readonly string MyAllowSpecificOrigins = "_myAllowSpecificOrigins";
  22. public Startup(IConfiguration configuration)
  23. {
  24. Configuration = configuration;
  25. }
  26. public IConfiguration Configuration { get; }
  27. // This method gets called by the runtime. Use this method to add services to the container.
  28. public void ConfigureServices(IServiceCollection services)
  29. {
  30. services.AddCors(options =>
  31. {
  32. options.AddPolicy(MyAllowSpecificOrigins,
  33. builder =>
  34. {
  35. builder.AllowAnyOrigin()
  36. .AllowAnyMethod()
  37. .AllowAnyHeader();
  38. });
  39. });
  40. services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme).AddJwtBearer(option =>
  41. {
  42. option.TokenValidationParameters = new TokenValidationParameters
  43. {
  44. ValidateIssuer = false,
  45. ValidateAudience = false,
  46. ValidateLifetime = true,
  47. ValidateIssuerSigningKey = true,
  48. ValidIssuer = Configuration["jwt:Issuer"],
  49. IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(Configuration["jwt:Key"])),
  50. ClockSkew = TimeSpan.Zero
  51. };
  52. });
  53. services.AddControllers().AddNewtonsoftJson(o =>
  54. {
  55. o.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;
  56. o.SerializerSettings.DefaultValueHandling = DefaultValueHandling.Ignore;
  57. o.SerializerSettings.NullValueHandling = NullValueHandling.Ignore;
  58. });
  59. services.AddDbContext<spDbContext>(optionsAction =>
  60. optionsAction.UseSqlServer(Configuration.GetConnectionString("DefaultConnect"))
  61. );
  62. services.AddSingleton<ISchedulerFactory, StdSchedulerFactory>();
  63. services.AddSingleton<IFileTaskService, FileTaskCacheService>();
  64. }
  65. // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
  66. public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
  67. {
  68. if (env.IsDevelopment())
  69. {
  70. app.UseDeveloperExceptionPage();
  71. }
  72. app.UseCors(MyAllowSpecificOrigins);
  73. app.UseHttpsRedirection();
  74. app.UseRouting();
  75. app.UseAuthentication();
  76. app.UseAuthorization();
  77. app.UseEndpoints(endpoints =>
  78. {
  79. endpoints.MapControllers();
  80. });
  81. }
  82. }
  83. }