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托管捆绑包) ,该模块允许 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文件(上面生成的)到发布地址,即可预览成功。