Program.cs
基础代码
var builder = WebApplication.CreateBuilder(args);
控制器/视图服务(这个没啥解释的 看自己的项目需求了)-必须项
纯API项目
builder.Services.AddControllers();
MVC项目
builder.Services.AddControllersWithViews();
Razor Pages项目
builder.Services.AddRazorPages();
Swagger/OpenAPI配置(API项目)-选用
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
Swagger提供了一个简单、易于使用的方式来设计和文档化RESTful API。开发人员可以使用Swagger UI来创建和编辑API规范,然后使用Swagger Editor生成符合OpenAPI规范的API文档。Swagger UI可以生成可交互的API文档,使开发人员更容易了解API的结构和用法
响应压缩AddResponse Compression -必须
主要是预防后期响应数据太大导致response太慢
builder.Services.AddResponseCompression(options => { options.Providers.Add<BrotliCompressionProvider>(); options.Providers.Add<GzipCompressionProvider>(); options.EnableForHttps = true; });
JWT 设置请求token
JwtSecurityTokenHandler.DefaultInboundClaimTypeMap.Clear(); var jwtIssuerOption = new JwtIssuerOptions(builder.Configuration.GetSection("JwtIssuer")); builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) .AddJwtBearer(options => { options.TokenValidationParameters = new TokenValidationParameters { ValidIssuer = jwtIssuerOption.Issuer, ValidAudience = jwtIssuerOption.Audience, IssuerSigningKey = new SymmetricSecurityKey(jwtIssuerOption.Secret), ValidateIssuerSigningKey = true, ClockSkew = TimeSpan.Zero }; });
跨域 Cors - 必须(配置很多 后面单独开一章)
builder.Services.AddCors(options => { options.AddPolicy("CorsPolicy", opt => opt.SetIsOriginAllowed(x => _ = true) .AllowAnyMethod() .AllowAnyHeader() .AllowCredentials() ); });
数据库连接 Add AmsContext - 必须
还有扩展写法 有兴趣的自研
builder.Services.AddDbContext<ApplicationDbContext>(options => options.UseSqlServer(builder.Configuration.GetConnectionString("DefaultConnection")));
SPA - 必须(现在大部分的web都是SPA 应用)
builder.Services.AddSpaStaticFiles(configuration: options => { options.RootPath = “wwwroot”; });
还能配置Email Job Google。。。
var app = builder.Build();
看个人项目需求 上面这些我用着差不多了。。下面是中间件
// 配置中间件管道 if (app.Environment.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI();
app.UseHsts(); //HTTP严格传输安全
app.UseHttpsRedirection();
}
app.UseCors("CorsPolicy");
app.UseAuthentication();
app.UseAuthorization();
app.UseResponseCompression();
app.MapControllers();
// SPA
app.UseSpaStaticFiles();
app.UseSpa(configuration: builder => { });
app.Run();