NET 5.0是3.1之后的.NET Core的下一個主要版本,但是不會替換.net framework
近日在嘗試.net 5 web api項目在iis的發布,遇到了一些問題,以及總結一下問題的處理思路。
首先安裝最新版本的vs 2019,我的是16.8.4版本,已經將.net 5包含進來。
我們可以從下圖看出來,未來net 5將占據很重要的位置,.NET 5 將基於 .NET Core 和 Mono 的最佳實踐構建出一個平台,用於所有現代 .NET 平台的開發。
有關.Net 5 的介紹可以看微軟的介紹:https://devblogs.microsoft.com/dotnet/introducing-net-5/
言歸正傳,我們要開始 .Net 5 web api 項目的實踐。
一、開發環境配置
.net 5 sdk(可以單獨安裝,也可以更新到vs 2019 最新 版本),Visual studio 2019
.NET Core Hosting Bundle(IIS托管捆綁包) ,捆綁包可安裝 .NET Core 運行時、.NET Core 庫和 ASP.NET Core 模塊。 該模塊允許 ASP.NET Core 應用在 IIS 后面運行。
安裝成功后,打開下圖的模塊,我們會看到Asp.NetCoreModuleV2模塊已經存在。
二、創建web api 項目
如果你已經熟悉,請忽略一下步驟
我們直接新建ASP.Net Core Web應用程序,下一步
起項目名稱,然后點擊創建按鈕
然后再下圖做如下選擇
創建完的項目結構如下。
需要注意的是,項目默認是沒有生成WebBaseApi.xml文件的,需要進行單獨設置,雙擊項目中Properties>調試功能,如下圖所示,勾選XML文件
創建完項目,我們直接運行看看,很順利,項目打開了,如下圖所示,.Net 5 web api 是默認集成swagger的,不需要我們在單獨設置了。
從項目中我們可以看到默認加載了Nuget包Swashbuckle.AspNetCore。
Startup累里面的也加了相應配置。注意代碼中紅色部分,是swagger設置,第一個默認網站打開swagger 頁面
public void ConfigureServices(IServiceCollection services) { services.AddControllers(); services.AddSwaggerGen(c => { c.SwaggerDoc("v1", new OpenApiInfo { Title = "我的web api 3.1 接口", Version = "v1", Description = "我的swagger接口說明" }); }); } // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } app.UseSwagger(); //app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/v1/swagger.json", "WebApi3.1 v1"));
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint($"{virtualPath}/swagger/v1/swagger.json", "LRSMESX V1");
c.RoutePrefix = string.Empty;//設置根節點訪問
c.DefaultModelExpandDepth(-1);
c.DisplayRequestDuration();
c.DocumentTitle = "龍軟安全生產共享開發平台";
c.DocExpansion(Swashbuckle.AspNetCore.SwaggerUI.DocExpansion.None);
});
app.UseHttpsRedirection(); app.UseRouting(); app.UseAuthorization(); app.UseEndpoints(endpoints => { endpoints.MapControllers(); }); }
目前項目已經創建,並運行成功,接下來就是發布iis
將項目直接發布,並在IIS中創建站點,這個過程我這里省略了,需要注意的是,這里我們需要設置一下對應的應用池,.Net CLR版本選擇無托管代碼。
需要注意:我們需要從項目中拷貝對應的xml文件(上面生成的)到發布地址,即可預覽成功。