using WIDESEAWCS_S7Simulator.Core.Interfaces; using WIDESEAWCS_S7Simulator.Core.Manager; using WIDESEAWCS_S7Simulator.Core.Persistence; using WIDESEAWCS_S7Simulator.Core.Memory; using WIDESEAWCS_S7Simulator.Core.Entities; var builder = WebApplication.CreateBuilder(args); // Add services to the container. // 添加 CORS 支持(允许前后端分离) builder.Services.AddCors(options => { options.AddPolicy("AllowAll", policy => { policy.AllowAnyOrigin() .AllowAnyMethod() .AllowAnyHeader() .AllowCredentials(); }); }); builder.Services.AddControllers() .AddJsonOptions(options => { options.JsonSerializerOptions.PropertyNamingPolicy = System.Text.Json.JsonNamingPolicy.CamelCase; }); // Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle builder.Services.AddEndpointsApiExplorer(); builder.Services.AddSwaggerGen(); // Register core services builder.Services.AddSingleton(); // Get content root path for data directory var contentRoot = builder.Environment.ContentRootPath; var dataPath = Path.Combine(contentRoot, "Data"); builder.Services.AddSingleton(sp => new FilePersistenceService(dataPath)); builder.Services.AddSingleton(sp => { var config = new MemoryRegionConfig(); return new MemoryStore(config); }); var app = builder.Build(); // Configure the HTTP request pipeline. if (app.Environment.IsDevelopment()) { app.UseSwagger(); app.UseSwaggerUI(); } app.UseHttpsRedirection(); app.UseCors("AllowAll"); // 启用 CORS app.UseAuthorization(); app.MapControllers(); app.Run();