ASP.NET Core 基础知识

本文详细介绍了ASP.NET Core的基础知识,包括Startup类的配置和服务、依赖注入的生命周期、中间件的使用,以及配置、日志、路由和错误处理等关键概念。了解这些内容对于深入理解ASP.NET Core应用的构建至关重要。
摘要由CSDN通过智能技术生成

Startup类

Startup类

1.ConfigureServices:配置(注册)引用的服务。服务是一个提供应用功能的可重用组件

2.Configure:创建应用的请求处理管道

3.在应用启动时,ANC运行时会调用ConfigureServices和Configure

4.主机提供Startup类构造函数可用的某些服务,应用通过ConfigureServices添加其他服务,主机和应用服务都可以在Configure和整个应用中使用

5.只能将IConfiguration,IHostEnvironment,IWebHostEnvironment这三个服务注入到Startup的构造函数

6.在调用Configure之前,大多数服务都不可用

7.应用为不同的环境单独定义Startup类时,相应的Startup类会在运行时被选中

ConfigureService

1.可选

2.在Configure方法配置应用服务之前,由主机调用

3.其中按常规设置配置选项

4.IServiceCollection上有Add扩展方法,将服务添加到服务容器,使其在应用和Configure方法中可用

Configure方法

1.用于指定应用响应HTTP请求的方式

2.通过将中间件组件添加到IApplicationBuilder实例来配置请求管道

3.每个Use扩展方法将一个或多个中间件组件添加到请求管道

4.请求管道中的每个中间件组件负责调用管道中的下一个组件,或在适当情况下使链路发生短路

5.可以在Configure方法签名中指定其他服务,如果这些服务可用,则会被注入

在不启动的情况下配置服务

1.可以不使用Startup类来配置服务和处理请求管道,直接在主机生成器上调用ConfigureServices和Configure,即直接在CreateHostBuilder中使用

2.多个ConfigureServices会叠加,多个Configure会覆盖,以最后一个为准

使用Startup筛选器扩展Startup

1.在应用的Configure中间件管道的开头或末尾使用IStartupFilter来配置中间件

2.IStartupFilter.Configure可以将中间件设置为在库添加的中间件之前或之后运行

3.每个IStartupFilter可以在请求管道好着呢个添加一个或多个中间件

4.筛选器按照添加到服务容器的顺序调用

5.筛选器可在将控件传递给下一个筛选器之前或之后添加中间件,从而附加到应用管道的开头或末尾

在启动时从外部程序集添加配置

可以通过IHostingStartup实现,从外部的程序集添加配置


依赖关系注入(服务)

注入启动的服务

1.只能将IConfiguration,IHostEnvironment,IWebHostEnvironment这三个服务注入到Startup的构造函数

2.普通服务可以注入到Startup.Configure

服务生命周期

1.Transient,每次从服务容器进行请求时创建

2.Scope,每一次HTTP连接创建一个

3.Singleton,在第一次请求时或者在ConfigureService创建

服务注册方法

            services.AddTransient<ICustomService, CustomService>();
            services.AddTransient<ICustomService>(c=> new CustomService());
            services.AddTransient<CustomService>();

1.当一个接口对应对个不同的方法时,以最后一个方法为准。除非使用了TryAddTransient,在前面没有注册时,才使用

2.TryAddEnumerable仅当没有同一类型的实现时,才注册该服务

services.TryAddEnumerable(ServiceDescriptor.Transient<ICustomService, CustomService2>());

3.将服务注入到别的方法的构造函数时,必须有public构造函数。可以有参数,但是该参数必须有默认值

从main调用服务

            var host = CreateHostBuilder(args).Build();
            using(var serviceScope = host.Services.CreateScope())
            {
                var service = serviceScope.ServiceProvider;

                var context = service.GetRequiredService<Operation>();
            }
            host.Run();

用以解析应用范围内的已设置范围的服务,比如数据库连接

设计能够进行依赖注入的服务

1.设计服务以使用依赖关系注入来获取其依赖关系

2.避免进行有状态的静态方法调用

3.避免在服务中直接实例化依赖类

4.不应在应用类中包含过多的内容

5.View应该关注用户的界面问题,而应将业务规则和数据访问实现细节移到别的特定的类中。要遵守单一责任原则


中间件

1.中间件是一种装配到应用管道以外处理请求响应的软件。没个组件都可以选择是否将请求传递到管道的下一个组件,也可以在下一个组件的前后执行

2.请求委托用于生成请求管道。请求委托处理每个HTTP请求。

使用IApplicationBuilder创建中间件管道

在next前的逻辑是调用后面的组件前执行的,在next后的逻辑是调用后面的组件后执行的

顺序

1.异常/错误处理

2.HTTPS重定向中间件

3.静态文件中间件

4.Cooike策略中间件

5.路由请求中间件

6.身份验证中间件

7.授权中间件

8.会话中间件

9.终结点路由中间件

Use、Run、Map

1.Use方法可使管道短路(不调用next方法)

2.Run是一种约定,处在管道最后

3.Map扩展用作约定来创建管道分支。Map可以嵌套也可以同时匹配多个字段

            app.Map("/map1", level1 =>
            {
                level1.Map("/map11", level2=>
                {
                    level2.Run(async context =>
                     {
                         await context.Response.WriteAsync("map11");
                     });
                });
            });
            app.Map("/map1/map11", level1 =>
            {
                level1.Run(async context =>
                {
                    await context.Response.WriteAsync("map11");
                });
            });

4.MapWhen可以筛选,可以筛选path,也可以筛选query。

            app.MapWhen(context=>
            {
                // /ma可以,/ma1不可以,/ma/mb可用
                return context.Request.Path.StartsWithSegments("
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ASP.NET Core是一个跨平台的开源框架,用于构建Web应用程序。它是ASP.NET的下一代版本,具有更高的性能、更好的可测试性和更大的灵活性。 ASP.NET Core具有以下基础知识: 1. 架构:ASP.NET Core采用了模块化的架构,称为中间件(Middleware)。中间件可以按照需求进行配置和组合,实现各种功能,如路由、身份验证、日志记录等。 2. 跨平台:与传统的ASP.NET不同,ASP.NET Core可以在Windows、Linux和macOS等多个平台上运行。 3. 环境:ASP.NET Core引入了环境概念,可以根据不同的环境(开发、生产等)进行配置和部署。 4. 依赖注入:ASP.NET Core内置了依赖注入容器,可以轻松地进行依赖注入,提高代码的可测试性和可维护性。 5. Razor Pages:Razor Pages是一种新的页面模型,使得开发者可以将HTML标记和后端逻辑组合在一起,简化了开发过程。 6. Web API:ASP.NET Core提供了强大的Web API支持,可以轻松地构建RESTful风格的API。 7. 身份验证和授权:ASP.NET Core提供了丰富的身份验证和授权机制,包括基于Cookie的身份验证、JWT身份验证等。 8. 数据访问:ASP.NET Core可以与各种数据库进行交互,支持多种数据访问技术,如Entity Framework Core、Dapper等。 9. 部署和托管:ASP.NET Core应用程序可以以自包含的方式进行部署,可以通过IIS、Docker等进行托管。 以上是ASP.NET Core基础知识,希望对你有所帮助!如果你有更多问题,请继续提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值