图解AspNetCore和Furion(1):应用启动
2022/8/28 14:22:56
本文主要是介绍图解AspNetCore和Furion(1):应用启动,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
一、和AspNetCore5相比,从6开始,将Program和Startup类合并,直接在入口类中启动服务和中间件。同时,项目可以启动miniApi,直接在Program中创建WebAPI,但实际项目中,还是推荐使用传统的控制器方式。
二、Furion定义了静态类Serve,对AspNetCore的启动类进行了封装,同时支持Startup的合并和分离写法,更加简单和易用。
三、应用启动时,框架为我们启动了内置的跨平台服务器Kestrel。Kestrel可以作为服务器自托管,也可以托管在IIS中(限Windows平台),或者在客户端与Kestrel之间架设反向代理服务器(跨平台,推荐)。Kestrel与IIS、Nginx的关系如下:
四、延伸知识点
1、AspNetCore6中实现Startup的方法之一,保持使用6版本的新类WebApplication
//Program.cs public class Program { public static void Main(string[] args) { var builder = WebApplication.CreateBuilder(args); var startup = new Startup(builder.Configuration); startup.ConfigureServices(builder.Services); var app = builder.Build(); startup.Configure(app, app.Environment); app.Run(); } } //Startup.cs public class Startup { public IConfiguration Configuration { get; } public Startup(IConfiguration configuration) { Configuration = configuration; } public void ConfigureServices(IServiceCollection services) { services.AddRazorPages(); ...... } public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { if (!env.IsDevelopment()) { app.UseExceptionHandler("/Error"); app.UseHsts(); } app.UseHttpsRedirection(); ...... } }
2、Serve静态类源码,定义的Run方法的多个重载。可以看到,Furion使用的还是AspNetCore5及之前版本的Host静态类及其方法,这样用利于使用Startup。
public static class Serve { //默认 5000/5001 端口 public static void Run(string url = default) { Host.CreateDefaultBuilder(Environment.GetCommandLineArgs()) .ConfigureWebHostDefaults(webHostBuilder => { webHostBuilder.Inject() .ConfigureServices((context, services) => { // 默认配置控制器、动态 WebAPI 和规范化结果 services.AddCorsAccessor(); services.AddControllers().AddInjectWithUnifyResult(); }) .Configure((context, app) => { if (context.HostingEnvironment.IsDevelopment()) { app.UseDeveloperExceptionPage(); } app.UseUnifyResultStatusCodes(); app.UseHttpsRedirection(); app.UseStaticFiles(); app.UseRouting(); app.UseCorsAccessor(); app.UseAuthentication(); app.UseAuthorization(); app.UseInject(string.Empty); app.UseEndpoints(endpoints => { endpoints.MapControllers(); }); }); if (!string.IsNullOrWhiteSpace(url)) { webHostBuilder.UseUrls(url); } }) .Build() .Run(); } //Web 主机更多配置 //默认 5000/5001 端口 //泛型主机更多配置 public static void Run(Action<IWebHostBuilder> webHostBuilderConfigure, string url = default, Action<IHostBuilder> hostBuilderConfigure = default) { var hostBuilder = Host.CreateDefaultBuilder(Environment.GetCommandLineArgs()) .ConfigureWebHostDefaults(webHostBuilder => { webHostBuilder.Inject(); // 自定义端口 if (!string.IsNullOrWhiteSpace(url)) { webHostBuilder.UseUrls(url); } webHostBuilderConfigure(webHostBuilder); }); hostBuilderConfigure?.Invoke(hostBuilder); hostBuilder.Build().Run(); } }
这篇关于图解AspNetCore和Furion(1):应用启动的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2022-03-01沐雪多租宝商城源码从.NetCore3.1升级到.Net6的步骤
- 2024-12-06使用Microsoft.Extensions.AI在.NET中生成嵌入向量
- 2024-11-18微软研究:RAG系统的四个层次提升理解与回答能力
- 2024-11-15C#中怎么从PEM格式的证书中提取公钥?-icode9专业技术文章分享
- 2024-11-14云架构设计——如何用diagrams.net绘制专业的AWS架构图?
- 2024-05-08首个适配Visual Studio平台的国产智能编程助手CodeGeeX正式上线!C#程序员必备效率神器!
- 2024-03-30C#设计模式之十六迭代器模式(Iterator Pattern)【行为型】
- 2024-03-29c# datetime tryparse
- 2024-02-21list find index c#
- 2024-01-24convert toint32 c#