该AddJsonFile
扩展方法来自Microsoft.Extensions.Configuration.Json
NuGet包安装一下即可。
//处理.NetCore默认返回小写的问题
builder.Services.AddControllers().AddJsonOptions(options =>
{
options.JsonSerializerOptions.PropertyNamingPolicy = null;
});
//生产环境下
//builder.Services.AddCors(c =>
//{
// c.AddPolicy("LimitRequests", policy =>
// {
// policy.WithOrigins("", "")//允许跨域访问的地址
// .AllowAnyHeader()
// .AllowAnyMethod();
// });
//});
//测试环境或开发环境下
//任何跨域请求都通过
builder.Services.AddCors(c =>
{
c.AddPolicy("AllowAllOrigins", policy =>
{
policy.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader();
});
});
//跨域处理
app.UseCors("AllowAllOrigins");
//启用静态资源
app.UseStaticFiles(new StaticFileOptions
{
//资源所在的绝对路径。
FileProvider = new PhysicalFileProvider(System.IO.Path.Combine(Directory.GetCurrentDirectory(), "Img")),
//表示访问路径,必须'/'开头
RequestPath = "/Img"
});
//appsettings.json配置的内容
"ConnectionStrings": {
"OpenAuthDBContext": "Data Source=.;Initial Catalog=FYJuHeDB;User ID=sa;Password=33333", //数据库链接字符串
"BaiDuDiTuAK": "7LDhNUXqSFOeyDMglaPRpT5Y23g",
"Lon": "114.1379313", //经度
"Lat": "31.5963116" //纬度
}
/// <summary>
/// 读取数据库配置
/// </summary>
/// <param name="key1">ConnectionStrings</param>
/// <param name="key2">OpenAuthDBContext</param>
/// <returns></returns>
public string Set_Connection(string Key1, string Key2)
{
一、读取配置文件
var appDir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) ?? String.Empty;
var cfgPath = Path.Combine(appDir, "appsettings.json");
IConfigurationRoot? config = new ConfigurationBuilder()
.AddJsonFile(cfgPath)
.Build();
return config.GetSection(Key1).GetSection(Key2).Value;
}
如何启用swagger文档教程。
启用接口文档需要安装两个Nuget包,
Swashbuckle.AspNetCore.SwaggerGen
Swashbuckle.AspNetCore.SwaggerUI
以上便是全过程了,下面附上源码!
#region 添加swagger注释
var basePath = AppContext.BaseDirectory;
builder.Services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new OpenApiInfo
{
Version = "v1",
Title = "Api"
});
var xmlPath = Path.Combine(basePath, "WebApplication2.xml");// 注意这里接口的xml名称,与项目名保持一致
c.IncludeXmlComments(xmlPath, true);
//var xmlDomainPath = Path.Combine(basePath, "Project.Service.xml"); // 注意这里实体类的xml名称,与项目名保持一致
//c.IncludeXmlComments(xmlDomainPath, true);
c.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme
{
Description = "Value: Bearer {token}",
Name = "Authorization",
In = ParameterLocation.Header,
Type = SecuritySchemeType.ApiKey,
Scheme = "Bearer"
});
c.AddSecurityRequirement(new OpenApiSecurityRequirement()
{
{
new OpenApiSecurityScheme
{
Reference = new OpenApiReference
{
Type = ReferenceType.SecurityScheme,
Id = "Bearer"
},Scheme = "oauth2",Name = "Bearer",In = ParameterLocation.Header,
},new List<string>()
}
});
});
#endregion
#region 添加Swagger有关中间件
app.UseSwagger();
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("/swagger/v1/swagger.json", "API Demo v1");
});
#endregion
取消.Net 6接口入参强验证机制,假设接口定义了五个入参,但实际入参只有四个那么会导致接口接收不到参数,从而报错。加入以下代码,将取消该验证机制。
builder.Services.Configure<ApiBehaviorOptions>(options =>
{
// 禁用默认模型验证过滤器
options.SuppressModelStateInvalidFilter = true;
});
.NetCoreAPI发布至IIS默认启用接口文档页(/swagger/index.html)
//IIS默认启动页
app.UseDefaultFiles();