Net Core Web Api项目与在NginX下发布的方法

2020-03-17 14:02:19丽君

修改CreateHostBuilder代码如下:

public static IHostBuilder CreateHostBuilder(string[] args)
{
  return Host.CreateDefaultBuilder(args).ConfigureWebHostDefaults(
     webBuilder =>
     {
       //设置项目的启动文件
       webBuilder.UseStartup<Startup>();
       //Kestrel的默认监听端口是http5000、https5001。
       webBuilder.ConfigureKestrel(options =>
       {
         options.ListenAnyIP(5180);//监听本机任意ip的5180端口,相当于设置ip0.0.0.0
                      //options.Listen(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 5180));//监听指定ip的指定端口
       }); ;
     });
}

Startup

Startup的调用顺序如下:

Startup构造函数——ConfigureServices配置服务函数——Configure请求配置

Startup构造函数:

这里做了简单配置信息对象提取,实战中,像启动日志这样的操作也可以集中放在这里。

ConfigureServices配置服务函数:

这里只添加了一个控制器服务,实战中,还可以添加更多服务,比如使用services.AddCors添加跨域服务。

Configure请求配置:

这里做了一些请求配置,如:

app.UseDeveloperExceptionPage()——设置请求异常时的显示内容为内置异常错误界面(在Mvc模式下,还可以指定请求异常时的显示界面,如:app.UseExceptionHandler("/Home/Error");)

app.UseHttpsRedirection()——Https请求重定向,将Http请求转换成Https,增加一些安全性。(还可以追加app.UseHsts(),要求浏览器只发送https,实现安全双保险)

app.UseRouting()——配置endpointRouteBuilder。

app.UseEndpoints——使用endpointRouteBuilder。UseRouting与UseEndpoints组合实现路由。

app.UseAuthorization()——请求的授权处理,因为没有没有添加授权服务services.AddAuthorization,所以这里它是无效的。

----------------------------------------------------------------------------------------------------

到此,我们对Net Core Web Api项目已经有了初步的理解,现在我们调试一下,项目正常启动并运行,如下图:

可以看到,图中的请求端口44317,并不是我们设置的5180,这因为,调试时使用的是快速IIS来启动项目,等到发布后,就自然使用5180端口了。

依赖注入

这里简单介绍一下NetCore提供的依赖注入。

上文中提到的,框架调用Controller时,提供了一个入参—ILogger对象,这种行为就是依赖注入。

而这种为Controller提供的入参行为,在NetCore中是可以自定义增加;现在我们简单的增加一个对象。

首先创建一个Kiba类和一个IKiba接口,如下:

public interface IKiba
{
  string GetName();
}
public class Kiba: IKiba
{
  public string GetName()
  {
    return "Kiba518";
  }
}