ASP.NET Core 中文文档 第三章 原理(1)应用程序启动
2016-07-18 09:05
891 查看
原文:Application Startup
作者:Steve Smith
翻译:刘怡(AlexLEWIS)
校对:谢炀(kiler398)、许登洋(Seay)
ASP.NET Core 为你的应用程序提供了处理每个请求的完整控制。
章节:
Startup 类
Configure 方法
ConfigureServices 方法
在启动时服务可用
扩展阅读
每个
在 Middleware 一章中,你可以了解到更多有关中间件的信息,并使用IApplicationBuilder 定义请求管道。
正如通过
通过 依赖注入(dependency injection) 可将服务加入服务容器,使其在应用程序中可用。正如
IApplicationBuilder
被用于构建应用程序的请求管道。只可以在
IApplicationEnvironment
提供了访问应用程序属性,类似于
IHostingEnvironment
提供了当前的
ILoggerFactory
提供了创建日志的机制。可以在
IServiceCollection
当前容器中各服务的配置集合。只可在
看看
Startup Constructor -
ConfigureServices -
Configure -
中间件
.NET开放Web接口(OWIN)
返回目录
作者:Steve Smith
翻译:刘怡(AlexLEWIS)
校对:谢炀(kiler398)、许登洋(Seay)
ASP.NET Core 为你的应用程序提供了处理每个请求的完整控制。
Startup类是应用程序的入口(entry point),这个类可以设置配置(configuration)并且将应用程序将要使用的服务连接起来。开发人员可以在
Startup类中配置请求管道,该管道将用于处理应用程序的所有请求。
章节:
Startup 类
Configure 方法
ConfigureServices 方法
在启动时服务可用
扩展阅读
Startup 类
在 ASP.NET Core 中,Startup类提供了应用程序的入口,而且在所有应用程序中都有
Startup类。可能会存在特定环境的启动类和方法(参见 Working with Multiple Environments),但无论如何,
Startup类都将被充当为应用程序的启动点。ASP.NET 会在主程序集中搜索名为
Startup的类(在任何命名空间下)。你可以指定一个其它程序集用于检索,只需使用 Hosting:Application 配置键。ASP.NET 并不关心
Startup类是不是定义为
public,如果它符合命名规范,ASP.NET 将继续加载它。如果有多个
Startup类,也不会触发异常,ASP.NET 将基于命名空间选择其中一个(匹配项目的根命名空间优先,否则使用第一个按字母排列的命名空间中的类)。
Configure 方法
Configure方法用于指定 ASP.NET 应用程序将如何响应每一个 HTTP 请求。简单来说,你可以配置每个请求都接收相同的响应。然而,大多数现实世界应用程序需要比这多得多的功能。更复杂的管道配置可以封装于 中间件(middleware) 之中,并通过扩展方法添加到 IApplicationBuilder 上。
Configure方法必须接受一个 IApplicationBuilder 参数。一些额外服务,比如
IHostingEnvironment或
ILoggerFactory也可以被指定,如果在它们可用情况下,这些服务将会被服务器 注入 进来。在下例(源于默认的 Web 站点模板)中可见多个扩展方法被用于配置管道以支持 BrowserLink 、错误页、静态文件、ASP.NET MVC 以及 Identity。
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) { loggerFactory.AddConsole(Configuration.GetSection("Logging")); loggerFactory.AddDebug(); if (env.IsDevelopment()) { app.UseDeveloperExceptionPage();//手工高亮 app.UseDatabaseErrorPage();//手工高亮 app.UseBrowserLink();//手工高亮 } else { app.UseExceptionHandler("/Home/Error");//手工高亮 } app.UseStaticFiles();//手工高亮 app.UseIdentity();//手工高亮 // Add external authentication middleware below. To configure them please see http://go.microsoft.com/fwlink/?LinkID=532715 app.UseMvc(routes =>//手工高亮 { routes.MapRoute( name: "default", template: "{controller=Home}/{action=Index}/{id?}"); }); }
每个
Use扩展方法都会把一个 中间件 加入请求管道。比如
UseMvc扩展方法会把 路由中间件 加进请求管道,并把 MVC 配置为默认的处理器。
在 Middleware 一章中,你可以了解到更多有关中间件的信息,并使用IApplicationBuilder 定义请求管道。
ConfigureServices 方法
你的Startup类能可选地包含一个
ConfigureServices方法用来配置用于应用程序内的服务。
ConfigureServices方法是
Startup类中的公开方法,通过参数获取一个IServiceCollection 实例并可选地返回
IServiceProvider。
ConfigureServices需要在
Configure之前被调用。这一点非常重要,这是因为像 ASP.NET MVC 中的某些功能,需要从
ConfigureServices中请求某些服务,而这些服务需要在接入请求管道之前先被加入
ConfigureServices中。
正如通过
Configure,推荐在 IServiceCollection 上使用扩展方法来包装含有大量配置细节的
ConfigureServices。你可在本例(使用了默认的 Web 站点模板)中看到几个
Add[Something]扩展方法被用于设置应用程序,以便能够使用 Entity Framework、Identity 和 MVC:
public void ConfigureServices(IServiceCollection services) { // Add framework services. services.AddDbContext<ApplicationDbContext>(options =>//手工高亮 options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection"))); services.AddIdentity<ApplicationUser, IdentityRole>()//手工高亮 .AddEntityFrameworkStores<ApplicationDbContext>() .AddDefaultTokenProviders(); services.AddMvc();//手工高亮 // Add application services. services.AddTransient<IEmailSender, AuthMessageSender>(); services.AddTransient<ISmsSender, AuthMessageSender>(); }
通过 依赖注入(dependency injection) 可将服务加入服务容器,使其在应用程序中可用。正如
Startup类能将指定的依赖项作为其方法参数——而不是硬编码(hard-coding)来实例化特定实现——对于中间件、MVC 控制器以及应用程序中的其它类来说都可以做到这一点。
ConfigureServices方法同样是可以增加配置选项类的地方(如上例中的
AppSettings),只要你想让它在应用程序中生效。更多有关配置选项的信息请阅读Configuration。
在启动时服务可用
ASP.NET Core 在应用程序启动期间提供了一些应用服务和对象。你可以非常简单地使用这些服务,只需要在在Startup类的构造函数或是它的
Configure与
ConfigureServices方法中的一个包含合适的接口即可。下面定义了在
Startup类中对每个方法可用的服务。框架服务和对象包括:
IApplicationBuilder
被用于构建应用程序的请求管道。只可以在
Startup中的
Configure方法里使用。更多请阅读 请求Features。
IApplicationEnvironment
提供了访问应用程序属性,类似于
ApplicationName、
ApplicationVersion以及
ApplicationBasePath。可以在
Startup的构造函数和
Configure方法中使用。
IHostingEnvironment
提供了当前的
EnvironmentName、
WebRootPath以及 Web 根文件提供者。可以在
Startup的构造函数和
Configure方法中使用。
ILoggerFactory
提供了创建日志的机制。可以在
Startup的构造函数或
Configure方法中使用。更多请阅读 Logging。
IServiceCollection
当前容器中各服务的配置集合。只可在
ConfigureServices方法中被使用,通过在该方法中配置可使服务在应用程序中可用。
看看
Startup类中按它们被调用排序的每一个方法,下面的服务可被作为参数:
Startup Constructor -
IApplicationEnvironment-
IHostingEnvironment-
ILoggerFactory
ConfigureServices -
IServiceCollection
Configure -
IApplicationBuilder-
IApplicationEnvironment-
IHostingEnvironment-
ILoggerFactory
扩展阅读
在多环境中工作中间件
.NET开放Web接口(OWIN)
返回目录
相关文章推荐
- 初识ASP.NET Core 1.0
- ASP.NET MVC SSO 单点登录设计与实现
- asp.net 分布式应用开发
- 使用Visual Studio Code开发Asp.Net Core WebApi学习笔记(五)-- Filter
- 手动提交代替asp.net的button控件提交
- ASP.NET MVC进阶之路:深入理解Controller激活机制并使用Ioc容器创建对象
- asp.net对象——Response、Request
- NET Core环境并创建运行ASP.NET网站
- Mvc多级Views目录 asp.net mvc4 路由重写及 修改view 的寻找视图的规则
- ASP.NET身份认证
- C# WinForm 导出导入Excel/Doc 完整实例教程[使用Aspose.Cells.dll]
- asp.net MVC 应用程序的生命周期
- asp、aspx、php、jsp万能密码大全
- ASP.NET WebForm中用async/await实现异步
- 云服务器下搭建ASP.NET Core环境
- ASP.NET GirdView后台动态绑定数据
- 使用ASP.Net WebAPI构建REST服务(六)——Self-Host
- 使用ASP.Net WebAPI构建REST服务(五)——客户端
- 使用ASP.Net WebAPI构建REST服务(四)——参数绑定
- 使用ASP.Net WebAPI构建REST服务(三)——返回值