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/

IIS发布.Net 5 web api以及问题解决

 

 

 言归正传,我们要开始 .Net 5 web api 项目的实践。

一、开发环境配置

.net 5 sdk(可以单独安装,也可以更新到vs 2019 最新 版本),Visual studio 2019

.NET Core Hosting Bundle(IIS托管捆绑包) ,该模块允许 ASP.NET Core 应用在 IIS 后面运行。

下载

安装成功后,打开下图的模块,我们会看到Asp.NetCoreModuleV2模块已经存在。

 

 IIS发布.Net 5 web api以及问题解决

二、创建web api 项目

如果你已经熟悉,请忽略一下步骤

我们直接新建ASP.Net Core Web应用程序,下一步

IIS发布.Net 5 web api以及问题解决

起项目名称,然后点击创建按钮

 IIS发布.Net 5 web api以及问题解决

 

然后再下图做如下选择

 IIS发布.Net 5 web api以及问题解决

 

创建完的项目结构如下。

 IIS发布.Net 5 web api以及问题解决

 

 需要注意的是,项目默认是没有生成WebBaseApi.xml文件的,需要进行单独设置,双击项目中Properties>调试功能,如下图所示,勾选XML文件IIS发布.Net 5 web api以及问题解决

 

 创建完项目,我们直接运行看看,很顺利,项目打开了,如下图所示,.Net 5 web api 是默认集成swagger的,不需要我们在单独设置了。

IIS发布.Net 5 web api以及问题解决

 

 从项目中我们可以看到默认加载了Nuget包Swashbuckle.AspNetCore。

IIS发布.Net 5 web api以及问题解决

 

 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版本选择无托管代码

IIS发布.Net 5 web api以及问题解决

 

 需要注意:我们需要从项目中拷贝对应的xml文件(上面生成的)到发布地址,即可预览成功。

相关文章:

  • 2022-12-23
  • 2021-11-07
  • 2022-02-27
  • 2021-11-09
  • 2018-12-25
  • 2022-12-23
  • 2021-06-11
  • 2021-11-21
猜你喜欢
  • 2022-12-23
  • 2022-01-07
  • 2021-10-14
  • 2022-12-23
  • 2022-12-23
  • 2021-11-15
相关资源
相似解决方案