Привет, я слежу за документами Microsoft ...
https://docs.microsoft.com/en-us/aspnet/core/fundamentals/configuration/?view=aspnetcore-3.1#json -configuration-provider
, чтобы внедрить конфигурации как синглтон NET Core Web API
Вот код Program.cs , куда я загружаю свои конфигурации:
public class Program
{
public static Dictionary<string, string> arrayDict =
new Dictionary<string, string>
{
{"connString", "Data Source =xxx/xxx;User Id =xxx;Password =xxx"}
};
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureAppConfiguration(builder =>
{
builder.AddInMemoryCollection(arrayDict);
builder.AddJsonFile(
"appsettings.json", optional: false, reloadOnChange: false);
})
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
}
Здесь, в Startup.cs я использую следующее
public class Startup
{
private readonly IConfiguration Configuration;
public Startup(IConfiguration config)
{
Configuration = config;
}
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers();
services.AddSingleton<IConfiguration>(Configuration);
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseHttpsRedirection();
app.UseRouting();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}
}
Тем не менее, когда я использую внедрение зависимостей в моем контроллере, я не могу внедрить IConfiguration и получаю следующую ошибку при вызове действия cotroller (ошибка времени выполнения):
Подходящий конструктор для типа 'IrisDotNetCore.Controllers.LoginController' не найден. Убедитесь, что тип является конкретным, и службы зарегистрированы для всех параметров конструктора publi c.
LoginController.cs Код:
[Route("api/[controller]")]
[ApiController]
public class LoginController : ControllerBase
{
IConfiguration _configuration;
LoginController(IConfiguration configuration)
{
_configuration = configuration;
}
}
Что возможно здесь что-то не так?