My question is simple. I have an ASP.net core 3.0 app, I added secrets using visualstudio and pasted my secrets into the secret file normally. Then inside my Program.cs, I added a call to addusersecrets as follows:

... ... .AddUserSecrets<Startup>() 

But while calling my secrets like Configuration["Authentication:Secret"] as I used to do when it was in appsettings.json, I get a null value in return.

I went through stackoverflow and tried solutions like changing my addsecrets as follows:

.AddUserSecrets("fds...-...-...askd") //OR .AddUserSecrets(typeof(Startup).Assembly, true, reloadOnChange: true) 

BUt none of then works.

I wonder if this secret stuff even works on asp.net core, because I don't see any reason my code doesn't work. please if someone gets it, can you tell me a solution ? Thanks.

5 Answers

Be sure to check that you've set the "ASPNETCORE_ENVIRONMENT" variable to "Development", else your app wont add your user secrets.

  • in powershell:

    $Env:ASPNETCORE_ENVIRONMENT = "Development"

  • cmd:

    setx ASPNETCORE_ENVIRONMENT "Development"

2

Did your code look like this ?

public Startup(IHostingEnvironment env) { var builder = new ConfigurationBuilder() .SetBasePath(env.ContentRootPath) .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true) .AddEnvironmentVariables(); if (env.IsDevelopment()) { builder.AddUserSecrets<Startup>(); } Configuration = builder.Build(); } 
4

For .Net 6 that doesn't use Startup one loads the assembly such as

build.AddUserSecrets(Assembly.GetExecutingAssembly()) 

In Asp.Net MVC 5, add this to Program.cs:

public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureAppConfiguration((hostingContext, configuration) => { configuration.Sources.Clear(); configuration.AddEnvironmentVariables(); configuration.AddUserSecrets(Assembly.GetExecutingAssembly(), true, true); }) .UseSystemd() .UseSerilog((context, service, configuration) => { configuration .MinimumLevel.Warning() .Enrich.FromLogContext() .WriteTo.Console(); }) .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>(); }); } 

User secrets are stored now in csproj project file. This is how you can read it(see image). I am using asp.net core 5 instructions

1

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.