最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用.NET8實(shí)現(xiàn)Web API的項(xiàng)目實(shí)踐

 更新時(shí)間:2024年05月21日 11:55:42   作者:zlbcdn  
ASP.NET Web API是一種框架,用于輕松構(gòu)建可以由多種客戶端訪問的 HTTP服務(wù),本文主要介紹了使用.NET8實(shí)現(xiàn)Web API的項(xiàng)目實(shí)踐,具有一定的參考價(jià)值,感興趣的可以了解一下

1、環(huán)境準(zhǔn)備

1.1、從官網(wǎng)下載及安裝VS2022社區(qū)版

可從官網(wǎng)下載VS2022社區(qū)版本,并進(jìn)行安裝。下載鏈接:官網(wǎng)VS2022社區(qū)版本鏈接

【說明】去年(2023年)底,微軟發(fā)布了NET8,為長(zhǎng)期支持版本。目前長(zhǎng)期支持的版本為:NET6NET8。所以建議直接使用NET8。在VS2022安裝時(shí),默認(rèn)的NET版本就是NET8。

1.2、下載及安裝asp.net core的運(yùn)行時(shí)及IIS Module

安裝完成VS2022后,需要額外安裝Core運(yùn)行時(shí)及IIS的模塊。

1、下載及安裝運(yùn)行時(shí)以及IIS的模塊

直接在網(wǎng)上輸入: windows hosting bundle托管捆綁包。找到官網(wǎng)就能下載,下載完成后進(jìn)行安裝。
【說明】先在本機(jī)完成安裝IIS,否則還得折騰。

在這里插入圖片描述

2、完成安裝

在這里插入圖片描述

安裝完成后,在IIS模塊中應(yīng)該能夠看到AspNetCoreModuleV2

在這里插入圖片描述

3、IIS設(shè)置

因?yàn)橐С挚缙脚_(tái)性,微軟推出“Kestrel”服務(wù),替代IIS承載asp.net core等Web服務(wù)。因此IIS的web承載功能就沒用了,IIS只是一個(gè)請(qǐng)求轉(zhuǎn)發(fā)的功能,類似Nginx。所以,需要設(shè)置IIS的程序池進(jìn)行相關(guān)設(shè)置。
創(chuàng)建一個(gè)新的程序應(yīng)用池,CLR版本選擇“無托管代碼”,如下圖所示。使用asp.net core發(fā)布的網(wǎng)站,選擇應(yīng)用程序池時(shí),選擇剛才創(chuàng)建的這個(gè)。

在這里插入圖片描述

在發(fā)布asp.net core的web程序時(shí),選擇剛才設(shè)置的程序池

在這里插入圖片描述

以上工作完成后,就進(jìn)入Web API的正式創(chuàng)建了

2、WebAPI工程創(chuàng)建

新建項(xiàng)目–>選擇ASP.NET Core Web API

在這里插入圖片描述

在這里插入圖片描述

選擇相應(yīng)的信息后,點(diǎn)擊創(chuàng)建既可

在這里插入圖片描述

一些默認(rèn)的配置需要優(yōu)化下。以便更快的上手。

在這里插入圖片描述

2.1 創(chuàng)建API服務(wù)

1、Controllers–>添加–>控制器
選擇API控制器

在這里插入圖片描述

2.2 推薦的庫

2.2.1 數(shù)據(jù)庫篇

2.2.1.1、 SQLSugar

一般NET會(huì)使用三個(gè)ORM的框架:EF、SQLSugar、Drapper。這三個(gè)基本大差不差,推薦使用SQLSugar。
這里重點(diǎn)講一下SQLsugar,
在program.cs文件中,直接寫入如下代碼,然后在需要用到的地方進(jìn)行

//第2步:設(shè)置第三方ORM-SQLSugar

//注冊(cè)上下文
builder.Services.AddHttpContextAccessor();
//注冊(cè)SqlSugar用AddScoped
builder.Services.AddScoped<ISqlSugarClient>(s =>
{
    //Scoped用SqlSugarClient 
    SqlSugarClient sqlSugar = new SqlSugarClient(new ConnectionConfig()
    {
        DbType = SqlSugar.DbType.Oracle,
        ConnectionString = builder.Configuration["DBConnectStr"],//在appsettings.json配置文件中的字符串設(shè)置
        IsAutoCloseConnection = true,
    },
   db =>
   {
       db.Aop.OnLogExecuting = (sql, pars) =>
       {
           //可以進(jìn)行日志記錄之類的工作

       };
   });
    return sqlSugar;
});

2.2.1.2、 OracleAccess

若不使用ORM等第三方的庫,則使用Oracle的庫“ManagedDataAccess”。這個(gè)的好處是不用關(guān)心32還64位的問題。

在這里插入圖片描述

2.2.2、IOC篇

IOC就是實(shí)例的創(chuàng)建,交給了容器。由容器創(chuàng)建實(shí)例,一般而言。項(xiàng)目中本身也包含此功能:Microsoft.Extention.DependencyInjection。既可以使用自帶的,也可以使用第三方的。第三方使用比較多的是autofac。目前推薦大家使用自帶的,省事兒

2.2.2.1、autofac

1、在program.cs文件中

builder.Host.UseServiceProviderFactory(new AutofacServiceProviderFactory());
builder.Host.ConfigureContainer<ContainerBuilder>(b =>
{
    b.RegisterModule<AutofacModuleRegister>();
});

其中AutofacModuleRegister的定義如下:

 public class AutofacModuleRegister: Autofac.Module
 {
     /// <summary>
     /// 自動(dòng)加載注冊(cè)程序集
     /// </summary>
     /// <param name="builder"></param>
     protected override void Load(ContainerBuilder builder)
     {
         var basePath = AppContext.BaseDirectory;

         #region 帶有接口層的服務(wù)注入
         //服務(wù)注入
         List<string> dllServiceFiles = new List<string>()
         {
                 "TsinghuaNet8WebAPI.Dl.dll",
                 "TsinghuaNet8WebAPI.dll",
                 "TsinghuaNet8WebAPI.Bl.dll"
         };

         var cacheType = new List<Type>();
         List<Assembly> servicesAssembly = new List<Assembly>();
         foreach (var item in dllServiceFiles)
         {
             var dllFile = Path.Combine(basePath, item);
             if (!File.Exists(dllFile))
             {
                 throw new Exception($"{item}丟失,請(qǐng)重新編譯后請(qǐng)檢查 bin 文件夾,并拷貝。");
             }
             servicesAssembly.Add(Assembly.LoadFrom(dllFile));
         }

         //構(gòu)造器注入
         builder.RegisterAssemblyTypes(servicesAssembly.ToArray()).
             Where(t => !t.IsAbstract) //還可以添加自定義的檢索條件
             .InstancePerDependency(); //默認(rèn)的類型

         #endregion
     }

 }

2.2.2.2、使用自帶的容器

直接在program.cs中填寫。簡(jiǎn)單省事。

#region 注入接口服務(wù)
builder.Services.AddScoped<IGetEmrInfo, GetEmrInfo>();
#endregion

2.2.3、日志記錄篇

常用的NET日志工具,一般有:log4NET、NLog這兩個(gè)?;旧隙疾畈欢?,本次以Nlog為例

2.2.3.2 nlog

在program.測(cè)試中添加以下代碼。

//第3步,配置日志信息,使用NLog
builder.Logging.ClearProviders();//清除所有的日志ILoggerProvider 記錄提供器
builder.Logging.SetMinimumLevel(LogLevel.Information);
builder.Logging.AddNLog("Configs/NlogConfig.config");
builder.Host.UseNLog();//設(shè)置NLog 依賴注入 .net core 版本需要引用NLog.Web.AspNetCore
builder.Logging.AddConsole();

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

在這里插入圖片描述

配置文件如下:

<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      autoReload="true"
      internalLogLevel="Warn"
      internalLogFile="internal-nlog.txt">
	<!-- autoReload:true 監(jiān)視配置文件,并在配置文件發(fā)生更改時(shí)自動(dòng)重新載入配置文件而不需要重啟應(yīng)用程序 -->

	<targets>
		<!-- archiveAboveSize 代表日志文本文件的最大字節(jié)數(shù),單位字節(jié) -->
		<!-- maxArchiveFiles 代表存儲(chǔ)的日志文件最大個(gè)數(shù),設(shè)置后可以避免日志文件無限量增加,導(dǎo)致磁盤空間不夠 -->
		<target name="Infofile" xsi:type="File" 
			fileName="${currentdir}/Logs/Info-${shortdate}.txt" 
			archiveAboveSize="10000000" maxArchiveFiles="30"
			
		/>

		<target 
			name="Errorfile" 
			xsi:type="File" 
			fileName="${currentdir}/Logs/Error-${shortdate}.txt"  
			archiveAboveSize="10000000" 
			maxArchiveFiles="3"
			layout="${longdate}|${logger}|${uppercase:${level}}|${message} ${exception}"
		/>
		
	</targets>

	<rules>
		<!--All logs, including from Microsoft-->
		<logger name="*" minlevel="Info"  writeTo="Infofile" />
		<logger name="*" minlevel="Error" writeTo="Errorfile" />

		<!--Skip Microsoft logs and so log only own logs-->
		<logger name="Microsoft.*" minlevel="Trace" writeTo="blackhole" final="true" />
		
	</rules>
</nlog>

2.2.4 其他

2.2.4.1 設(shè)置

swagger的設(shè)置

//Swagger服務(wù)
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);
});

基本的配置就是這樣子

到此這篇關(guān)于使用.NET8實(shí)現(xiàn)Web API的項(xiàng)目實(shí)踐的文章就介紹到這了,更多相關(guān).NET8實(shí)現(xiàn)Web API內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • asp.net中簡(jiǎn)體轉(zhuǎn)繁體實(shí)現(xiàn)代碼

    asp.net中簡(jiǎn)體轉(zhuǎn)繁體實(shí)現(xiàn)代碼

    最近到了臺(tái)企,什么都要用繁體的。開發(fā)中也遇到了簡(jiǎn)繁體轉(zhuǎn)換的問題。這里和朋友們分享一下用.net實(shí)現(xiàn)簡(jiǎn)繁體轉(zhuǎn)換的經(jīng)驗(yàn)。
    2010-03-03
  • 深入解讀CancellationToken: .NET異步操作的控制操作方法

    深入解讀CancellationToken: .NET異步操作的控制操作方法

    CancellationToken是.NET中用于異步操作取消的機(jī)制,通過CancellationTokenSource控制取消信號(hào),實(shí)現(xiàn)異步任務(wù)的優(yōu)雅終止,本文重點(diǎn)介紹CancellationToken: .NET異步操作的控制操作方法,感興趣的朋友跟隨小編一起看看吧
    2025-12-12
  • 使用本機(jī)IIS?Express開發(fā)Asp.Net?Core應(yīng)用圖文教程

    使用本機(jī)IIS?Express開發(fā)Asp.Net?Core應(yīng)用圖文教程

    IIS Express是一個(gè)Mini版的IIS,能夠支持所有的Web開發(fā)任務(wù),本篇經(jīng)驗(yàn)將和大家介紹使用自定義主機(jī)名來訪問運(yùn)行在IIS?Express上的站點(diǎn)程序的方法,希望對(duì)大家的工作和學(xué)習(xí)有所幫助
    2023-06-06
  • Asp.net中安全退出時(shí)清空Session或Cookie的實(shí)例代碼

    Asp.net中安全退出時(shí)清空Session或Cookie的實(shí)例代碼

    網(wǎng)站中點(diǎn)擊退出,如果僅僅是重定向到登錄/出頁面,此時(shí)在瀏覽器地址欄中輸入登錄后的某個(gè)頁面地址如主頁,你會(huì)發(fā)現(xiàn)不用登錄就能訪問,這種退出并不安全了,下面通過本文給大家介紹安全退出時(shí)清空Session或Cookie的實(shí)例代碼
    2016-11-11
  • asp.net GridView控件鼠標(biāo)移動(dòng)某行改變背景顏色(方法一)

    asp.net GridView控件鼠標(biāo)移動(dòng)某行改變背景顏色(方法一)

    asp.net GridView控件鼠標(biāo)移動(dòng)某行改變背景顏色
    2009-12-12
  • ASP.NET Core中如何利用Csp標(biāo)頭對(duì)抗Xss攻擊

    ASP.NET Core中如何利用Csp標(biāo)頭對(duì)抗Xss攻擊

    這篇文章主要給大家介紹了關(guān)于ASP.NET Core中如何利用Csp標(biāo)頭對(duì)抗Xss攻擊的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用ASP.NET Core具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • .net core EF Core調(diào)用存儲(chǔ)過程的方式

    .net core EF Core調(diào)用存儲(chǔ)過程的方式

    這篇文章主要給大家介紹了關(guān)于.net core EF Core調(diào)用存儲(chǔ)過程的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用.net core EF Core具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • GridView分頁的實(shí)現(xiàn)以及自定義分頁樣式功能實(shí)例

    GridView分頁的實(shí)現(xiàn)以及自定義分頁樣式功能實(shí)例

    本文為大家詳細(xì)介紹下GridView實(shí)現(xiàn)分頁并自定義的分頁樣式,具體示例代碼如下,有想學(xué)習(xí)的朋友可以參考下哈,希望對(duì)大家有所幫助
    2013-07-07
  • asp.net利用存儲(chǔ)過程實(shí)現(xiàn)模糊查詢示例分享

    asp.net利用存儲(chǔ)過程實(shí)現(xiàn)模糊查詢示例分享

    這篇文章主要介紹了asp.net利用存儲(chǔ)過程實(shí)現(xiàn)模糊查詢的示例,大家參考使用吧
    2014-01-01
  • ASP.NET小結(jié)之MVC, MVP, MVVM比較以及區(qū)別(一)

    ASP.NET小結(jié)之MVC, MVP, MVVM比較以及區(qū)別(一)

    MVC, MVP和MVVM都是用來解決界面呈現(xiàn)和邏輯代碼分離而出現(xiàn)的模式。以前只是對(duì)它們有部分的了解,沒有深入的研究過,對(duì)于一些里面的概念和區(qū)別也是一知半解。現(xiàn)在一邊查資料,并結(jié)合自己的理解,來談一下對(duì)于這三種模式思想的理解,以及它們的區(qū)別。歡迎各位高手拍磚。
    2014-05-05

最新評(píng)論

高州市| 南木林县| 城固县| 香港| 长葛市| 桂林市| 聊城市| 灌阳县| 合山市| 从江县| 临夏市| 敦化市| 万荣县| 迁安市| 宣城市| 三原县| 友谊县| 金乡县| 浮山县| 鹤壁市| 临城县| 昭觉县| 凤庆县| 凤凰县| 仪征市| 井研县| 屯留县| 尤溪县| 五家渠市| 宜丰县| 马公市| 边坝县| 乳山市| 临高县| 偏关县| 拉萨市| 时尚| 嘉祥县| 全南县| 东阿县| 三穗县|