I am trying to get my connection string from my appsettings.json file and use it in my startup file, but I keep getting am error
Value cannot be null. Parameter name: connectionString.
This is my Appsetting.json file:
{
"Project": {
"ConnectionStrings": "Data Source=(local)\\SQLSERVER; Database=RecommendationSite; Persist Security Info=false; User ID='sa'; Password='sa'; MultipleActiveResultSets=True; Trusted_Connection=False;",
"CompanyName": "RecommendationSite1 ",
"CompanyPhone": "+7 (111) 111-11-11",
"CompanyPhoneShort": "+71111111111",
"CompanyEmail": "[email protected]"
}
}
Method attempting to read that connection string in Startup.cs:
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using RecommendationSite.Data;
using RecommendationSite.Domain.Repositories.Abstract;
using RecommendationSite.Domain.Repositories.EntityFramework;
using RecommendationSite.Domain;
using RecommendationSite.Service;
using Microsoft.AspNetCore.Identity;
namespace RecommendationSite
{
public class Startup
{
public IConfiguration Configuration { get; }
public Startup(IConfiguration configuration) => Configuration = configuration;
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
Configuration.Bind("Project", new Config());
services.AddTransient<ITextFieldsRepository, EFTextFieldsRepository>();
services.AddTransient<IServiceItemsRepository, EFServiceItemsRepository>();
services.AddTransient<DataManager>();
services.AddDbContext<AppDbContext>(x => x.UseSqlServer(Config.ConnectionString));
services.AddIdentity<IdentityUser, IdentityRole>(opts =>
{
opts.User.RequireUniqueEmail = true;
opts.Password.RequiredLength = 6;
opts.Password.RequireNonAlphanumeric = false;
opts.Password.RequireLowercase = false;
opts.Password.RequireUppercase = false;
opts.Password.RequireDigit = false;
}).AddEntityFrameworkStores<AppDbContext>().AddDefaultTokenProviders();
services.ConfigureApplicationCookie(options =>
{
options.Cookie.Name = "myCompanyAuth";
options.Cookie.HttpOnly = true;
options.LoginPath = "/account/login";
options.AccessDeniedPath = "/account/accessdenied";
options.SlidingExpiration = true;
});
services.AddControllersWithViews()
.SetCompatibilityVersion(CompatibilityVersion.Version_3_0).AddSessionStateTempDataProvider();
services.AddDbContext<RecommendationSiteContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("RecommendationSiteContext")));
}
// 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();
}
//else
//{
// app.UseExceptionHandler("/Home/Error");
// // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
// app.UseHsts();
//}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseCookiePolicy();
app.UseAuthentication();
app.UseAuthorization();
/*var defaultCulture = new CultureInfo("en-US");
var localizationOptions = new RequestLocalizationOptions
{
DefaultRequestCulture = new RequestCulture(defaultCulture),
SupportedCultures = new List<CultureInfo> { defaultCulture },
SupportedUICultures = new List<CultureInfo> { defaultCulture },
};
app.UseRequestLocalization(localizationOptions);
var ui = System.Globalization.CultureInfo.CurrentUICulture;*/
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
});
}
}
}
I'm a novice programmer and I'm confused about something, maybe someone knows what the reason is?
I searched all the forums and tried many different variations.