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
的参数,也可以包含一些其他的五福 IHostingEnvironment
和 ILoggerFactory
的参数。
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
中设置是无效的。
时间: 2024-10-12 02:50:34