修改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";
}
}








