C# 有多少个';配置';方法在asp.net内核中是否可行?
在ASP.NET Core 3.1中,Configure方法发挥着神奇的作用 情景1 创建新项目时,框架将构建以下方法签名:C# 有多少个';配置';方法在asp.net内核中是否可行?,c#,asp.net-web-api,asp.net-core-3.1,C#,Asp.net Web Api,Asp.net Core 3.1,在ASP.NET Core 3.1中,Configure方法发挥着神奇的作用 情景1 创建新项目时,框架将构建以下方法签名: public void Configure(IApplicationBuilder app, IWebHostEnvironment env) 应用程序使用此签名并不奇怪,因为我可以假定ASP.NET核心框架希望签名保持原样 场景2 删除第二个参数IWebHostEnvironment: public void Configure(IApplicationBuilder
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
应用程序使用此签名并不奇怪,因为我可以假定ASP.NET核心框架希望签名保持原样
场景2
删除第二个参数IWebHostEnvironment:
public void Configure(IApplicationBuilder app)
应用程序工作正常
场景3
在“ConfigureServices”方法中将my DbContext与记录器一起添加到IServiceCollection中:
public void Configure(IApplicationBuilder app, ILogger<Startup> logger, VegaDbContext vegaDbContext)
应用程序不工作。将引发以下异常:
System.Exception:'无法解析类型为的服务
“织女星。控制器。天气预报控制器”
类型上方法“Configure”的参数“weatherForecastController”
“织女星,创业”
有人能解释一下框架实际上是如何完成方法调用的,以及它如何能够解析一些类型,如ILogger和VegaDbContext,但不能解析WeatherForecastController。它通过使用依赖注入基础设施来工作。
Configure
的参数从web主机的ServiceProvider
检索。这里的关键字是“服务”--默认情况下,控制器不作为服务添加到服务集合中
为了通过依赖项注入访问控制器,您需要调用ConfigureServices
方法的addcontrollerasservices
扩展方法
services.AddControllers()
.AddControllersAsServices();
// or
services.AddControllersWithViews()
.AddControllersAsServices();
// or
services.AddMvc()
.AddControllersAsServices();
public void Configure(IApplicationBuilder app, WeatherForecastController weatherForecastController)
services.AddControllers()
.AddControllersAsServices();
// or
services.AddControllersWithViews()
.AddControllersAsServices();
// or
services.AddMvc()
.AddControllersAsServices();