3 回答

TA貢獻(xiàn)1816條經(jīng)驗(yàn) 獲得超6個(gè)贊
ASP.NET Core 使用依賴(lài)注入作為一項(xiàng)基本功能來(lái)管理整個(gè)框架的依賴(lài)關(guān)系。為了讓依賴(lài)注入框架知道如何解決依賴(lài)關(guān)系,需要首先配置這些依賴(lài)關(guān)系或“服務(wù)” 。
當(dāng)您在您的網(wǎng)站中創(chuàng)建 Web 主機(jī)時(shí),ASP.NET Core 已經(jīng)為非常核心的服務(wù)執(zhí)行了此操作,Program.cs
但隨著您在 Web 應(yīng)用程序中啟用更多功能,您將需要向應(yīng)用程序添加其他服務(wù)以選擇加入功能。
例如services.AddMvc()
,添加在應(yīng)用程序中啟用 MVC 功能和中間件所需的服務(wù)?;蛘?code>services.AddAuthentication()添加在您的應(yīng)用程序中啟用身份驗(yàn)證所需的服務(wù)。
由于這些功能是基于選擇加入的,默認(rèn)情況下不啟用,因此應(yīng)用程序的作者需要一種方法來(lái)控制它。這就是該ConfigureServices
方法存在的原因:在這里,您可以添加要啟用該功能的服務(wù)。
此外,您還可以使用它來(lái)添加自己的服務(wù),以便您也可以在應(yīng)用程序中使用依賴(lài)注入;例如在控制器中解析您自己的服務(wù)。
依賴(lài)注入實(shí)際上是一個(gè)相當(dāng)復(fù)雜的話(huà)題,所以我建議你看一下關(guān)于依賴(lài)注入的文檔,看看它是如何工作的,以及你可以用它做什么。

TA貢獻(xiàn)1826條經(jīng)驗(yàn) 獲得超6個(gè)贊
ConfigureServices 有一個(gè)參數(shù),類(lèi)型為 IServiceCollection。IServiceCollection,這是一個(gè)DI(Dependency Injection)容器。將服務(wù)添加到此容器將使它們可用于依賴(lài)項(xiàng)注入。這意味著我們可以在應(yīng)用程序的任何地方注入這些服務(wù)。ConfigureServices 主要用于 DI 和設(shè)置項(xiàng)目中包含的各種庫(kù)設(shè)置。

TA貢獻(xiàn)1795條經(jīng)驗(yàn) 獲得超7個(gè)贊
ConfigureServices
方法是:
選修的。
在 Configure 方法之前由主機(jī)調(diào)用以配置應(yīng)用程序的服務(wù)。
配置選項(xiàng)按約定設(shè)置的位置。
典型的模式是調(diào)用所有的Add{Service}
方法,然后調(diào)用所有的services.Configure{Service}
方法。例如,請(qǐng)參閱[配置身份服務(wù)][1]。
主機(jī)可能會(huì)在調(diào)用 Startup 方法之前配置一些服務(wù)。有關(guān)詳細(xì)信息,請(qǐng)參閱主機(jī)。
對(duì)于需要大量設(shè)置的功能,有 Add{Service} 擴(kuò)展方法IServiceCollection
。一個(gè)典型的 ASP.NET Core 應(yīng)用程序?yàn)?Entity Framework、Identity 和 MVC 注冊(cè)服務(wù):
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(
Configuration.GetConnectionString("DefaultConnection")));
services.AddDefaultIdentity<IdentityUser>()
.AddDefaultUI(UIFramework.Bootstrap4)
.AddEntityFrameworkStores<ApplicationDbContext>();
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
// Add application services.
services.AddTransient<IEmailSender, AuthMessageSender>();
services.AddTransient<ISmsSender, AuthMessageSender>();
}
將服務(wù)添加到服務(wù)容器可使它們?cè)趹?yīng)用程序和 Configure 方法中可用。這些服務(wù)通過(guò)依賴(lài)注入或從ApplicationServices.
參考:https ://learn.microsoft.com/en-us/aspnet/core/fundamentals/startup?view=aspnetcore-2.2#the-configureservices-method
- 3 回答
- 0 關(guān)注
- 137 瀏覽
添加回答
舉報(bào)