.net 6 DI ApplicationServices 不包含在 WebApplication 中

mac*_*ach 10 dependency-injection asp.net-core-localization .net-6.0

app.UseRequestLocalization(app.ApplicationServices.GetRequiredService<IOptions<RequestLocalizationOptions>>().Value);

Run Code Online (Sandbox Code Playgroud)

我想在我的项目中使用 .net 6 进行全球化。但是program.cs我收到错误

错误 CS1061
“WebApplication”不包含“ApplicationServices”的定义,并且找不到接受“WebApplication”类型的第一个参数的可访问扩展方法“ApplicationServices”(您是否缺少 using 指令或程序集引用?)

我能做些什么?

小智 14

在 .Net 6 中,ApplicationServices可以通过app.Serviceswhich 返回来访问IServiceProvider。你可以这样尝试。

var options = app.Services.GetRequiredService<IOptions<RequestLocalizationOptions>>();
app.UseRequestLocalization(options.Value);
Run Code Online (Sandbox Code Playgroud)

  • 对于.Net 7 来说是一样的 (2认同)

小智 11

应用程序应投射到如下所示的界面中:-

var options = ((IApplicationBuilder)app).ApplicationServices.GetRequiredService<IOptions<RequestLocalizationOptions>>();

app.UseRequestLocalization(options.Value);
Run Code Online (Sandbox Code Playgroud)

  • 您也可以直接调用[app.Services](https://learn.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.builder.webapplication.services)。这是同一个服务提供商。 (8认同)