目录

1、环境准备1.1、从官网下载及安装VS2022社区版1.2、下载及安装asp.net core的运行时及IIS Module

2、WebAPI工程创建2.2 推荐的库2.2.1 数据库篇2.2.1.1、 SQLSugar2.2.1.2、 OracleAccess

2.2.2、IOC篇2.2.2.1、autofac2.2.2.2、使用自带的容器

2.2.3、日志记录篇2.2.3.2 nlog

2.2.4 其他2.2.4.1 设置

1、环境准备

1.1、从官网下载及安装VS2022社区版

可从官网下载VS2022社区版本,并进行安装。下载链接:官网VS2022社区版本链接 【说明】去年(2023年)底,微软发布了NET8,为长期支持版本。目前长期支持的版本为:NET6和NET8。所以建议直接使用NET8。在VS2022安装时,默认的NET版本就是NET8。

1.2、下载及安装asp.net core的运行时及IIS Module

安装完成VS2022后,需要额外安装Core运行时及IIS的模块。

1、下载及安装运行时以及IIS的模块 直接在网上输入: windows hosting bundle或托管捆绑包。找到官网就能下载,下载完成后进行安装。 【说明】先在本机完成安装IIS,否则还得折腾。 2、完成安装 安装完成后,在IIS的模块中应该能够看到AspNetCoreModuleV2 3、IIS设置 因为要支持跨平台性,微软推出“Kestrel”服务,替代IIS承载asp.net core等Web服务。因此IIS的web承载功能就没用了,IIS只是一个请求转发的功能,类似Nginx。所以,需要设置IIS的程序池进行相关设置。 创建一个新的程序应用池,CLR版本选择“无托管代码”,如下图所示。使用asp.net core发布的网站,选择应用程序池时,选择刚才创建的这个。 在发布asp.net core的web程序时,选择刚才设置的程序池 以上工作完成后,就进入Web API的正式创建了

2、WebAPI工程创建

新建项目–>选择ASP.NET Core Web API 选择相应的信息后,点击创建既可 一些默认的配置需要优化下。以便更快的上手。 ## 2.1 创建API服务 1、Controllers–>添加–>控制器 选择API控制器

2.2 推荐的库

2.2.1 数据库篇

2.2.1.1、 SQLSugar

一般NET会使用三个ORM的框架:EF、SQLSugar、Drapper。这三个基本大差不差,推荐使用SQLSugar。 这里重点讲一下SQLsugar, 在program.cs文件中,直接写入如下代码,然后在需要用到的地方进行

//第2步:设置第三方ORM-SQLSugar

//注册上下文

builder.Services.AddHttpContextAccessor();

//注册SqlSugar用AddScoped

builder.Services.AddScoped(s =>

{

//Scoped用SqlSugarClient

SqlSugarClient sqlSugar = new SqlSugarClient(new ConnectionConfig()

{

DbType = SqlSugar.DbType.Oracle,

ConnectionString = builder.Configuration["DBConnectStr"],//在appsettings.json配置文件中的字符串设置

IsAutoCloseConnection = true,

},

db =>

{

db.Aop.OnLogExecuting = (sql, pars) =>

{

//可以进行日志记录之类的工作

};

});

return sqlSugar;

});

2.2.1.2、 OracleAccess

若不使用ORM等第三方的库,则使用Oracle的库“ManagedDataAccess”。这个的好处是不用关心32还64位的问题。

2.2.2、IOC篇

IOC就是实例的创建,交给了容器。由容器创建实例,一般而言。项目中本身也包含此功能:Microsoft.Extention.DependencyInjection。既可以使用自带的,也可以使用第三方的。第三方使用比较多的是autofac。目前推荐大家使用自带的,省事儿

2.2.2.1、autofac

1、在program.cs文件中

builder.Host.UseServiceProviderFactory(new AutofacServiceProviderFactory());

builder.Host.ConfigureContainer(b =>

{

b.RegisterModule();

});

其中AutofacModuleRegister的定义如下:

public class AutofacModuleRegister: Autofac.Module

{

///

/// 自动加载注册程序集

///

///

protected override void Load(ContainerBuilder builder)

{

var basePath = AppContext.BaseDirectory;

#region 带有接口层的服务注入

//服务注入

List dllServiceFiles = new List()

{

"TsinghuaNet8WebAPI.Dl.dll",

"TsinghuaNet8WebAPI.dll",

"TsinghuaNet8WebAPI.Bl.dll"

};

var cacheType = new List();

List servicesAssembly = new List();

foreach (var item in dllServiceFiles)

{

var dllFile = Path.Combine(basePath, item);

if (!File.Exists(dllFile))

{

throw new Exception($"{item}丢失,请重新编译后请检查 bin 文件夹,并拷贝。");

}

servicesAssembly.Add(Assembly.LoadFrom(dllFile));

}

//构造器注入

builder.RegisterAssemblyTypes(servicesAssembly.ToArray()).

Where(t => !t.IsAbstract) //还可以添加自定义的检索条件

.InstancePerDependency(); //默认的类型

#endregion

}

}

2.2.2.2、使用自带的容器

直接在program.cs中填写。简单省事。

#region 注入接口服务

builder.Services.AddScoped();

#endregion

2.2.3、日志记录篇

常用的NET日志工具,一般有:log4NET、NLog这两个。基本上都差不多,这有个连接:NET常用的10个日志记录工具 本次以Nlog为例

2.2.3.2 nlog

在program.测试中添加以下代码。

//第3步,配置日志信息,使用NLog

builder.Logging.ClearProviders();//清除所有的日志ILoggerProvider 记录提供器

builder.Logging.SetMinimumLevel(LogLevel.Information);

builder.Logging.AddNLog("Configs/NlogConfig.config");

builder.Host.UseNLog();//设置NLog 依赖注入 .net core 版本需要引用NLog.Web.AspNetCore

builder.Logging.AddConsole();

添加配置文件,如图所示。

配置文件如下:

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

autoReload="true"

internalLogLevel="Warn"

internalLogFile="internal-nlog.txt">

fileName="${currentdir}/Logs/Info-${shortdate}.txt"

archiveAboveSize="10000000" maxArchiveFiles="30"

/>

name="Errorfile"

xsi:type="File"

fileName="${currentdir}/Logs/Error-${shortdate}.txt"

archiveAboveSize="10000000"

maxArchiveFiles="3"

layout="${longdate}|${logger}|${uppercase:${level}}|${message} ${exception}"

/>

2.2.4 其他

2.2.4.1 设置

swagger的设置

//Swagger服务

builder.Services.AddSwaggerGen(c =>

{

c.SwaggerDoc("v1", new OpenApiInfo

{

Title = "接口说明",

Version = "v1",

Contact = new OpenApiContact { Name = "WebApi", Email = "xxx", Url = new Uri("http://info.btch.edu.cn") },

License = new OpenApiLicense { Name = "XXX公司", Url = new Uri("http://info.btch.edu.cn") }

});

c.OrderActionsBy(o => o.RelativePath);

string path = AppContext.BaseDirectory;

var xmlPath = Path.Combine(path, "ClinicWebApplication.xml");

c.IncludeXmlComments(xmlPath, true);

});

基本的配置就是这样子

参考阅读

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。

大家都在找:

.net:net面试题

前端:前端开发

数据库:数据库有哪些