public void ConfigureServices(IServiceCollection services) { services.AddControllers(); services.AddHealthChecks(); services.AddSwaggerGen(c => { var xmlPath = Path.Combine(AppContext.BaseDirectory, $"{Assembly.GetExecutingAssembly().GetName().Name}.xml"); c.IncludeXmlComments(xmlPath); }); services.AddAuthZeroConfig(Configuration); services.AddCors(CorsConfig.GetPolicy()); services.AddAutoMapper(AppDomain.CurrentDomain.GetAssemblies()); services.AddTransient <IApiKey, GoogleLocationApiKey>(); services.AddHttpClient <GeocodingService>() .AddPolicyHandler(PollyConfig.GetRetryPolicy()) .AddPolicyHandler(PollyConfig.GetCircuitBreakerPolicy()); services.AddDbContext <WorkerDbContext>(options => options.UseSqlite(Configuration.GetConnectionString("WorkerDatabase"))); services.AddScoped <IWorkerRepository, WorkerRepository>(); services.AddTransient <IAddressToCoordinatesTranslator, AddressToCoordinatesTranslator>(); services.AddTransient <DistanceCalculator>(); services.AddTransient <WorkerProfileFinder>(); services.AddSpaStaticFiles(SpaConfig.GetOptions()); }
/// <summary> /// 配置SPA service /// </summary> /// <param name="services"></param> /// <param name="config"></param> public static void AddSpaService(this IServiceCollection services, SpaConfig config) { if (!config.Enable) { return; } services.AddSpaStaticFiles(options => { options.RootPath = config.RootPath; }); }
/// <summary> /// 使用SPA中间件 /// </summary> /// <param name="app"></param> /// <param name="env"></param> /// <param name="config"></param> public static void UseSpaMiddleware(this IApplicationBuilder app, IWebHostEnvironment env, SpaConfig config) { if (!config.Enable) { return; } app.UseSpaStaticFiles(); app.UseSpa(builder => { //生产模式代理到build后的文件目录 builder.Options.SourcePath = config.SourcePath; if (env.IsDevelopment()) { //开发模式下代理到本地启动的Vue服务 builder.UseProxyToSpaDevelopmentServer("http://localhost:3000"); } }); }