
以控臺的形式,運行.net core mvc 代碼,
Host.CreateDefaultBuilder(args) .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>();//指定網路主機要使用的啟動型別, });
回傳默認的IHostBuilder ,程式初始化,
根據官方說明檔案:該方法做了這么多事情:
將 ContentRootPath 設定為 GetCurrentDirectory() 的結果
從 "DOTNET_" 前綴的環境變數加載主機 IConfiguration
從提供的命令列引數加載主機 IConfiguration
從 "appsettings" 和 "appsettings" 加載應用 IConfiguration,[EnvironmentName] json "
使用條目程式集 EnvironmentName "開發" 時從用戶機密加載應用 IConfiguration
從環境變數加載應用 IConfiguration
從提供的命令列引數加載應用 IConfiguration
將 ILoggerFactory 配置為記錄到控制臺、除錯和事件源輸出
當 EnvironmentName 為 "開發" 時,對依賴關系注入容器啟用范圍驗證
此時json配置已經被加載,
1、ConfigureServices 方法 :運行時呼叫,使用此方法將服務添加到容器,用于配置依賴注入以在運行時根據依賴關系創建物件,
1)可選,
2)在 Configure 方法配置應用服務之前,由主機呼叫,
services.AddControllersWithViews();
默認運行時將Controller 注冊,
將服務添加到服務容器,使其在應用和 Configure 方法中可用,服務通過依賴關系注入或 ApplicationServices 進行決議,
注:IServiceCollection為.net core 自帶的一個容器,
IServiceCollection container = new ServiceCollection(); services.AddScoped<IMyDependency, MyDependency>(); services.AddTransient<IOperationTransient, Operation>(); services.AddScoped<IOperationScoped, Operation>(); services.AddSingleton<IOperationSingleton, Operation>(); services.AddSingleton<IOperationSingletonInstance>(new Operation(Guid.Empty));
AddTransient:每次從服務容器進行請求時創建的, 這種生存期適合輕量級、 無狀態的服務,作用域生存期服務 (AddScoped) 以每個客戶端請求(連接)一次的方式創建,
AddSingleton:單例,在第一次請求后,后續請求都使用相同實體, 如果應用需要單一實體行為,建議允許服務容器管理服務的生存期,不要實作單一實體設計模式并提供用戶代碼來管理物件在類中的生存期,
AddScoped:作用域生存期服務 ,以每個客戶端請求(連接)一次的方式創建,
2、Configure 方法用于指定應用回應 HTTP 請求的方式,可通過將中間件組件添加到 IApplicationBuilder 實體來配置請求管道,Configure 方法可使用 IApplicationBuilder,但未在服務容器中注冊,托管創建 IApplicationBuilder 并將其直接傳遞到 Configure,
Configure 用于配置中間件(middleware)以構建請求處理流水線,
public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } else { app.UseExceptionHandler("/Error"); app.UseHsts(); } app.UseHttpsRedirection(); app.UseStaticFiles(); app.UseRouting(); app.UseAuthorization(); app.UseEndpoints(endpoints => { endpoints.MapRazorPages(); }); }
IApplicationBuilder :將嵌入式定義的中間件委托添加到應用程式的請求管道,(IApplicationBuilder,Func <HttpContext,Func <Task>,Task>))
原創,轉載請注明出處,
又是深夜,先寫道這里,后續繼續學習~

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/63594.html
標籤:其他
