不管是ASP.NET Core还是net5、net6 应用程序是在.NET Core 控制台程序下调用特定的库,这是ASP.NET Core应用程序开发的根本变化。所有的ASP.NET托管库都是从Program开始执行,而不是由IIS托管。也就是说.NET工具链可以同时用于.NET Core控制台应用程序和ASP.NET Core应用程序。
以下是Program类中Main方法的示例代码,Main方法负责初始化Web主机,调用Startup和执行应用程序。
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>()
.UseUrls("http://*:99");
});
}
以上代码直接写死99端口去访问。
我们也可以通过写入appsettings.json文件去定义端口
internal static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureAppConfiguration(builder =>
{//添加这一部分代码
builder.AddJsonFile("appsettings.json", optional: true);
})
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder
//.UseUrls("http://*:80")
.UseStartup<Startup>();
})
.UseAutofac()
.UseSerilog();
在appsettings.json中定义Kestrel节点
{
"ConnectionStrings": {
"connstr": "Server=.; Database=Transfer; Persist Security Info=True;User ID=sa;Password=123;Packet Size=512;",
},
"Kestrel": {
"Endpoints": {
"Http": { "Url": "http://*:58" }
}
}
}
在程序启动后会自动使用我们在appsettings中配置的58为服务端口