欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

细说.net core Startup

程序员文章站 2024-01-04 11:11:52
...

Startup类配置服务和应用程序的请求管道。

Startup 类

  • 可以选择的包括ConfigureServices方法来配置应用程序的服务。
  • 必须包括一个 Configure 方法来创建应用程序的请求处理管道。
    ConfigureServices和Configure在用用程序启动时由运行时调用:
public class Startup
{
    //向服务容器中添加服务
    public void ConfigureServices(IServiceCollection services)
    {
        ...
    }

    // 使用Configure 方法 配置HTTP 请求管道
    public void Configure(IApplicationBuilder app)
    {
        ...
    }
}

可以在项目中为不同的环境分别定义独立的启动类Startup(如, StartupDevelopment),系统启动时会选择适当的启动类。ASP.NET 并不关心 Startup 类是不是定义为 public,如果它符合命名规范,ASP.NET 将继续加载它。如果有多个 Startup 类,也不会触发异常,ASP.NET 将基于命名空间选择其中一个(匹配项目的根命名空间的启动类优先,否则使用第一个按字母排列的命名空间中的启动类)。

ConfigureServices 方法

  • 可选的。
  • 在 Configure 方法之前调用,用来配置应用程序的服务。
  • 它的配置选项是按约定设置的。
    向服务容器添加服务,使他们在项目和配置方法中可用。这些服务是通过依赖注入或从IApplicationBuilder.ApplicationServices解决实现。
    最大的特性是,需要大量的设置,可用过IServiceCollection的扩展方法上添加[服务]。一个典型的web应用程序需要注册服务实体框架,Identity,和MVC:
 public void ConfigureServices(IServiceCollection services)
        {
             //注册MVC
              services.AddMvc();
            //注册数据库上下文
             services.AddDbContext<NetCoreForWebContext>(options =>                            
              options.UseSqlServer(Configuration.GetConnectionString("NetCoreForWebContext")));
            //注册Identity
            services.AddIdentity<ApplicationUser, IdentityRole>()
            .AddEntityFrameworkStores<ApplicationDbContext>()
            .AddDefaultTokenProviders();
        }

Services available in Startup

web host通过启动类的构造函数提供了一些有效可用服务。应用程序还可以通过ConfigureServices增加额外的服务。主机配置的服务和ConfigureServices增加的额外的服务在整个应用程序中都是有效可用的。

Configure 方法

Configure 方法用于指定应用程序如何响应HTTP请求。请求的管道通过向IApplicationBuilder实例中添加中间件组件j进行配置。IApplicationBuilder在Configure方法中是可用的,但它没有在服务容器中注册。托管将会创建一个IApplicationBuilder并直接将其传递给Configure方法。
ASP.NET Core 模板配置了一个支持开发的异常页面管道,适用于BrowserLink,错误页面,静态文件,ASP。NET MVC:

 public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
         //设置错误页面中间件
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
                app.UseBrowserLink();
            }
            else
            {
                app.UseExceptionHandler("/Home/Error");
            }
         //添加静态文件服务中间件
            app.UseStaticFiles();
        //添加mvc路由设置中间件
            app.UseMvc(routes =>
            {
                routes.MapRoute(
                    name: "default",
                    template: "{controller=Home}/{action=Index}/{id?}");

            });
        }

每个 Use 扩展方法都会把一个 中间件 加入请求管道。比如 UseMvc 扩展方法会把 路由中间件 加进请求管道,并把 MVC 配置为默认的处理器。

上一篇:

下一篇: