ASP.NET Core 中文文档 第三章 原理(1)应用程序启动
原文:Application Startup
作者: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=532715app.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
注意
盡管?ILoggerFactory?在構造函數中可用,但它通常在?Configure?方法中配置。具體可閱讀?Logging。
原文地址:http://www.cnblogs.com/dotNETCoreSG/p/aspnetcore-3_1-application-startup.html
.NET社區新聞,深度好文,微信中搜索dotNET跨平臺或掃描二維碼關注
贊賞
人贊賞
總結
以上是生活随笔為你收集整理的ASP.NET Core 中文文档 第三章 原理(1)应用程序启动的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ASP.NET Core 中文文档 第三
- 下一篇: ASP.NET Core 中文文档 第三