你的位置:首页 > ASP.net教程

[ASP.net教程]ASP.NET 5 入门——Application Startup


ASP.NET 5 入门——Application Startup¶

Startup 类¶

在 ASP.NET 5 中,Startup 类是一个应用的入口点,我们可以为不同环境配置不同的内容。

编译器会查找项目文件夹下的所有 *.cs 文件进行编译,而运行时会寻找所有命名空间下类名为 Startup 的类作为启动方式。

注解

可以通过设置 project.json 文件选择需要(或不需要)编译的文件和文件夹;也可以设置在不同的程序集中搜索 Startup 类。


Startup 类必须定义一个 Configure 方法,也可以同时定义一个 ConfigureServices 方法。


ConfigureServices 方法¶

ConfigureServices 用来定义我们使用了哪些服务,比如MVC、EF、Identity、Logging、Route;也可以自定义一些服务。

下面的例子中,配置了EntityFramework(用于数据访问,需要在 config.json 中正确设置连接字符串)、Identity(用于身份验证/即登录)和MVC。

public void ConfigureServices(IServiceCollection services){  // Add framework services.  services.AddEntityFramework()    .AddSqlServer()    .AddDbContext<ApplicationDbContext>(options =>      options.UseSqlServer(Configuration["Data:DefaultConnection:ConnectionString"]));  services.AddIdentity<ApplicationUser, IdentityRole>()    .AddEntityFrameworkStores<ApplicationDbContext>()    .AddDefaultTokenProviders();  services.AddMvc();  // Add application services.  services.AddTransient<IEmailSender, AuthMessageSender>();  services.AddTransient<ISmsSender, AuthMessageSender>();}


在调用过 ConfigureServices 之后,运行时会调用 Configure 方法。


Configure 方法¶

Configure 方法签名必须包含 IApplicationBuilder 的参数,也可以包含一些其他的五福 IHostingEnvironmentILoggerFactory 的参数。

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory){  //在控制台中输出log  loggerFactory.AddConsole(Configuration.GetSection("Logging"));  loggerFactory.AddDebug();  //在开发环境下,显示错误详细信息  if (env.IsDevelopment())  {    app.UseBrowserLink();    app.UseDeveloperExceptionPage();    app.UseDatabaseErrorPage();  }  else  {    //否则,导向错误页面    app.UseExceptionHandler("/Home/Error");    // 创建数据库    try    {      using (var serviceScope = app.ApplicationServices.GetRequiredService<IServiceScopeFactory>()        .CreateScope())      {        serviceScope.ServiceProvider.GetService<ApplicationDbContext>()          .Database.Migrate();      }    }    catch { }  }  app.UseIISPlatformHandler(options => options.AuthenticationDescriptions.Clear());  //允许访问wwwroot文件夹下的静态文件  app.UseStaticFiles();  //设置身份验证方式  app.UseIdentity();  // 设置MVC路由  app.UseMvc(routes =>  {    routes.MapRoute(      name: "default",      template: "{controller=Home}/{action=Index}/{id?}");  });}


警告

设置MVC的路由方式必须在 Configure 中设置,仅在 ConfigureServices 中设置是无效的。