簡體   English   中英

無法在 .net core 3.1 中注入依賴項

[英]unable to inject dependency in .net core 3.1

嗨,我正在關注微軟文檔...

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,並且在調用控制器操作時出現以下錯誤(運行時錯誤):

找不到適合類型“IrisDotNetCore.Controllers.LoginController”的構造函數。 確保類型是具體的,並且為公共構造函數的所有參數注冊了服務。

LoginController.cs代碼:

[Route("api/[controller]")]
[ApiController]
public class LoginController : ControllerBase
{
    IConfiguration _configuration;


    LoginController(IConfiguration configuration)
    {
        _configuration = configuration;
    }
}

這里可能有什么問題?

您的構造函數必須是公共的或內部的 - 請記住,在您的情況下,無法創建 LoginController 的實例(因為LoginController方法是私有的)。 甚至錯誤消息(確保類型是具體的,並且為公共構造函數的所有參數注冊了服務)也表明了這一點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM