2021-05-12 14:32:11
ASP.NET Core Web API 最小化專案
ASP.NET Core中預設的ASP.NET Core 模板中有Web API 模板可以建立Web API專案。
有時,只需要建立一個API,不需要關心Razor,在地化或XML序列化。通過刪除無用的NuGet軟體包和程式碼,可以提高 API 的載入時間並減少部署包大小。
新建專案
開啟VS2017 新建一個ASP.NET Core 應用程式 (.NET Core)專案,命名為miniwebapi。確定後選擇Web API 模板,並將“身份驗證”設定為“不進行身份驗證”。
然後確定就建立好了專案,預設專案的csproj 檔案內容如下:
<Project Sdk="Microsoft.NET.Sdk.Web"> <PropertyGroup> <TargetFramework>netcoreapp1.1</TargetFramework> </PropertyGroup> <ItemGroup> <Folder Include="wwwroot" /> </ItemGroup> <ItemGroup> <PackageReference Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.0.0" /> <PackageReference Include="Microsoft.AspNetCore" Version="1.1.2" /> <PackageReference Include="Microsoft.AspNetCore.Mvc" Version="1.1.3" /> <PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="1.1.2" /> </ItemGroup> <ItemGroup> <DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="1.0.1" /> </ItemGroup> </Project>
刪除NuGet包
首先刪除掉 Microsoft.AspNetCore.Mvc。
其實 Microsoft.VisualStudio.Web.CodeGeneration.Tools 及也可以刪除 Microsoft.ApplicationInsights.AspNetCore 。
接著新增
Microsoft.AspNetCore.Mvc.Core
Microsoft.AspNetCore.Mvc.Formatters.Json
最終miniwebapi.csproj檔案如下:
<Project Sdk="Microsoft.NET.Sdk.Web"> <PropertyGroup> <TargetFramework>netcoreapp1.1</TargetFramework> </PropertyGroup> <ItemGroup> <Folder Include="wwwroot" /> </ItemGroup> <ItemGroup> <PackageReference Include="Microsoft.AspNetCore" Version="1.1.2" /> <PackageReference Include="Microsoft.AspNetCore.Mvc.Core" Version="1.1.3" /> <PackageReference Include="Microsoft.AspNetCore.Mvc.Formatters.Json" Version="1.1.3" /> <PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="1.1.2" /> </ItemGroup> </Project>
其實Microsoft.Extensions.Logging.Debug 如果不需要也可以刪除,這裡做了一個保留。
設定服務
對於移除了Microsoft.ApplicationInsights.AspNetCore 的,需要在Program.cs 中去掉.UseApplicationInsights()
接著開啟Startup.cs 檔案,在ConfigureServices 方法中去掉 services.AddMvc();
然後改成如下:
services.AddMvcCore().AddJsonFormatters();
接著開啟預設的ValuesController.cs 更改成如下:
重點是去掉預設的繼承 Controller。
如果你有其他的需求如跨域,資料驗證,可以再新增對應的NuGet包。
Microsoft.AspNetCore.Mvc.Cors 跨域 對應的在services.AddMvcCore().AddJsonFormatters().AddCors();
Microsoft.AspNetCore.Mvc.DataAnnotations 資料驗證屬性。AddDataAnnotations();
測試
執行程式,使用偵錯功能,VS2017 會自動開啟瀏覽器並存取對應的api/values,顯示如下:
表示介面能夠成功存取。
這樣你可以只使用所需的功能,從而減少載入時間。ASP.NET Core 可以讓你靈活的使用想要使用的。
本文永久更新連結地址:http://www.linuxidc.com/Linux/2017-07/145498.htm
相關文章