创建项目
- 打开
Visual Studio 2022
- 点击创建项目
- 选择
ASP.NET Core Web Application
项目文件说明
mvcone 项目名称,双击可以打开
- Properties 文件
- launchSettings.json 项目配置信息,只用于项目启动信息(既:只处理项目启动信息)
- wwwroot 前端静态文件
- appsettings.json 项目配置文件
- Program.cs 启动依赖注入文件
- mvcone 项目文件修改
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<!--<Nullable>enable</Nullable>-->
<!--修改为 disable ,实体部分不强添加?问号-->
<Nullable>disable</Nullable>
<!--添加发布语言-->
<SatelliteResourceLanguages>en</SatelliteResourceLanguages>
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>
</Project>
- launchSettings.json 文件说明
// 当前文件是: 项目配置信息,只用于项目启动信息(既:只处理项目启动信息)
{
"$schema": "https://json.schemastore.org/launchsettings.json",
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:39564",
"sslPort": 0
}
},
"profiles": {
"chid.api": { //KESTREL 服务器设置
"commandName": "Project",
"dotnetRunMessages": true,
"launchBrowser": true,
"launchUrl": "swagger",
"applicationUrl": "http://localhost:5231",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"IIS Express": { // iis 服务器设置
"commandName": "IISExpress",
"launchBrowser": true,
"launchUrl": "swagger",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
}
}
}
- appsettings.json 文件
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*",
"JWTTokenOptions": {
"Audience": "http://localhost:5167",
"Issuer": "http://localhost:5167",
"SecurityKey": "MIGfMAOGCSqGSIb3DQEBAQUAA4GNAIMIGfMAOGCSqGSIb3DQEMIGfMAOGCSqGSIb3DQEBAQUAA4GNAIBAQUAA4GNAIMIGfMAOGCSqGSIb3DQEBAQUAA4GNAIMIGfMAOGCSqGSIb3DQEBAQUAA4GNAIMIGfMAOGCSqGSIb3DQEBAQUAA4GNAI"
},
"ConnectionStrings": { // 数据库链接字符串
"DefaultConnection": "Server=localhost;Database=数据库名称;Persist Security Info=false;User ID=postgres;Password=密码;TrustServerCertificate=false;Port=5432" //postgres 数据库
}
}
- Program.cs 文件
using Microsoft.Extensions.Options;
using WebAPI.Config;
var builder = WebApplication.CreateBuilder(args);
//处理日期,时区问题
AppContext.SetSwitch("Npgsql.EnableLegacyTimestampBehavior", true);
// Add services to the container.
builder.Services.AddControllers(); // 可以使用mvc控制器组件
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
// 使用扩展类
builder.Register();
//添加跨域策略
builder.Services.AddCors(options => {
options.AddPolicy("CorsPolicy", opt => opt.AllowAnyOrigin().AllowAnyHeader().AllowAnyMethod().WithExposedHeaders("X-Pagination"));
});
var app = builder.Build();
//Configuration 服务,可以获取到appsettings.json中的配置信息
var stringValue = builder.Configuration["Welcome"]; // 这个是直接拿到的值
//或
var objValue = builder.Configuration.GetSection("Welcome"); // 这个是拿到的对象形式
// Configure the HTTP request pipeline. 配置HTTP请求管道
if (app.Environment.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI();
}
app.UseAuthorization();
app.MapControllers();
//使用跨域策略
app.UseCors("CorsPolicy");
app.Run();
获取appsettings.json
中的某个信息
- 定义数据
appsettings.json
中
{
"Logging": {
...
},
"AllowedHosts": "*",
"Welcome": "hello world" // 定义
}
- 获取数据
Program.cs
中
//Configuration 服务,可以获取到appsettings.json中的配置信息
var stringValue = builder.Configuration["Welcome"];
//或
var objValue = builder.Configuration.GetSection("Welcome");
依赖注入方法Program.cs
中,也可以写扩展类
var builder = WebApplication.CreateBuilder(args);
#region 链接 Postgresql
builder.Services.AddDbContext<AppDbContext>(options => options.UseNpgsql(builder.Configuration.GetConnectionString("DefaultConnection")));
//处理日期,时区问题
AppContext.SetSwitch("Npgsql.EnableLegacyTimestampBehavior", true);
#endregion
// 依赖注入【注册服务】 语法:
// builder.Services.AddTransient<接口名称, 接口实现类>();
//方式一:注册服务“单例模式”:AddSingleton<>
//AddSingleton 整个生命周期,最多只有一个实例
//方式二:注册服务 AddTransient<>
//每次请求这个接口的时候都会建立一个实例
//方式三:注册服务 AddScoped<>
//每次http请求会建立一个实例,如果是一个同意个http请求,不会新建,还是原来那个
//例如:
builder.Services.AddTransient<IMenuType, IMenuTypeService>();
var app = builder.Build();
// 中间件使用
// 开发环境开启,错误详细信息
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
...