HTLF

一步一个脚印,走出高度...

导航

ASP.NET Core MVC创建项目

创建项目

  1. 打开Visual Studio 2022
  2. 点击创建项目
  3. 选择ASP.NET Core Web Application

项目文件说明

mvcone    项目名称,双击可以打开
  - Properties 文件
    - launchSettings.json     项目配置信息,只用于项目启动信息(既:只处理项目启动信息)
  - wwwroot    前端静态文件
  - appsettings.json  项目配置文件
  - Program.cs    启动依赖注入文件
  1. 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>
  1. 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"
      }
    }
  }
}

  1. 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 数据库
  }
}
  1. 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中的某个信息

  1. 定义数据appsettings.json
{
  "Logging": {  
    ...
  },
  "AllowedHosts": "*",
 "Welcome": "hello world"  // 定义
}
  1. 获取数据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();
}
...

posted on 2024-10-21 10:40  HTLF  阅读(6)  评论(0编辑  收藏  举报