![](/img/trans.png)
[英]How to inject dependency in Newtonsoft JsonConverter in .net core 3.1
[英]unable to inject dependency in .net core 3.1
嗨,我正在關注微軟文檔...
為了在 .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.