原文地址(個人博客):http://www.gitblogs.com/Blogs/Details?id=643c9664-dc4e-42cf-a15f-5368ebfcd7c9
第一次面對 Startup.cs 往往無從下手,本文記錄在項目中的經驗,不會涉入到內部的代碼實現以及相關的原理。
項目初始化完成startup.cs的原貌:
ConfigureServices: 將服務注入到容器中 比如:第三方組件
Configuere:配置http請求管道 ,比如:session,cookie
讀取配置信息
.Net Core 使用appsetting.json 存儲配置信息,如圖:
在文件中,增加了數據庫配置信息,怎么讀取呢?
public void ConfigureServices(IServiceCollection services) { string connectionString = Configuration.GetSection("ConnectionStrings").GetSection("DefaultConnection").Value; string providerMame = Configuration.GetSection("ConnectionStrings").GetSection("ProviderName").Value; services.AddMvc(); }
Configuration.GetSection("節點名稱").GetSection("子節點名稱").Value
這只是讀取配置的一種方式,還有通過類映射配置信息方式,在以后的章節中詳細描述
依賴注入
依賴注入在 ASP.NET Core 中無處不存在,在之前打印參數的例子中同樣用到。依賴注入好處都有啥?為什么我們需要依賴注入?在 很好地解釋了:
對於控制器,我們有三種方式注入對象:構造函數、控制器動作、屬性注入。然而,在一般的類中,使用自帶的 DI 只能是構造函數注入。到底是哪種方式好,見仁見智。
ASP.NET Core 服務可以被配置為以下生命周期:
瞬時(Transient)在它們每次請求時都會被創建。這一生命周期適合輕量級的,無狀態的服務。
作用域 (Scoped)在每次請求中只創建一次。
-
單例(Singleton)在它們第一次被請求時創建(或者如果你在 ConfigureServices運行時指定一個實例)並且每個后續請求將使用相同的實例。
public void ConfigureServices(IServiceCollection services)
{
...依賴注入代碼
services.AddMvc();
}
.Net Core 使用Session
.Net Core里使用Session需要添加Session類庫,項目上基於NuGet添加:Microsoft.AspNetCore.Session。
在startup.cs找到方法ConfigureServices(IServiceCollection services) 注入Session:
services.AddSession();
接下來我們要告訴Asp.net Core使用內存存儲Session數據,在Configure(IApplicationBuilder app,...):
app.UseSession();
在Controller中使用
.Net Core 使用Cache
說到內存緩存大家可能立馬想到了HttpRuntime.Cache,它位於System.Web命名空間下,但是在ASP.NET Core中System.Web已經不復存在
首先需要在ConfigureServices中注冊緩存服務
在下面的代碼中從Home控制器的構造函中獲取IMemoryCache實例
設置緩存 Set
_cache.Set("key", "value");
移除緩存 Remove
_cache.Remove("key");
.Net Core 使用異常信息
ASP.NET Core 2.0開始Microsoft.AspNetCore.All
包里面包含了所有以Microsoft.AspNetCore
開頭的包,只是需要在Startup
類的Configure
方法中進行配置
將UseDeveloperExceptionPage
放在你想捕獲的中間件之前,如app.UseMvc
。
注:為了應用程序的安全,一般不會在生產環境中啟起用開發者頁面(異常頁面)。
到這里,startup.cs 的基本情況介紹完成了,在以后的經驗總結中,會對每個配置點進行詳細的介紹!
原文地址(個人博客):http://www.gitblogs.com/Blogs/Details?id=643c9664-dc4e-42cf-a15f-5368ebfcd7c9