.Net CoreWebAPI基础配置的相关问题记录

文章介绍了在.NetCore应用中如何使用AddJsonFile加载appsettings.json配置,处理默认小写问题,以及设置跨域策略。同时,详细讲解了如何启用Swagger生成接口文档,包括安装必要的NuGet包、添加SwaggerGen服务和SwaggerUI中间件,以及配置安全认证。最后提到了取消接口参数强验证的设置。
摘要由CSDN通过智能技术生成

 该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();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值