Я пытаюсь создать новый проект ASP.Net MV5 (в настоящее время beta8) для цели обучения.Не удается получить AppSettings в asp.net mvc 6 beta 8
У меня застрял простой случай получения настроек приложения.
Я добавил некоторые конфигурации в файле appsettings.json:
{
"Data": {
"DefaultConnection": {
"ConnectionString": "Server=(localdb)\\mssqllocaldb;Database=aspnet5-someproject-e84e86e2-0fec-4132-9a91-2f6c4b4c61a3;Trusted_Connection=True;MultipleActiveResultSets=true"
}
},
"AppSettings": {
"CloudStorageContainerReference": "someproject",
"StorageConnectionString": "UseDevelopmentStorage=true"
}
}
Я также создал строго типизированный класс:
public class AppSettings
{
public string CloudStorageContainerReference { get; set; }
public string StorageConnectionString { get; set; }
}
И обновил свой файл запуска:
public void ConfigureServices(IServiceCollection services)
{
// Add Entity Framework services to the services container.
services.AddEntityFramework()
.AddSqlServer()
.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(Configuration["Data:DefaultConnection:ConnectionString"]));
// Add Identity services to the services container.
services.AddIdentity<ApplicationUser, IdentityRole>()
.AddEntityFrameworkStores<ApplicationDbContext>()
.AddDefaultTokenProviders();
// Add settings
services.Configure<AppSettings>(Configuration.GetSection("AppSettings"));
// Add MVC services to the services container.
services.AddMvc();
// Register application services.
services.AddTransient<IEmailSender, AuthMessageSender>();
services.AddTransient<ISmsSender, AuthMessageSender>();
}
На этом этапе, если я нарушу код, я вижу, что Configuration.GetSection("AppSettings").Value
имеет значение null.
Кроме того, я хочу, чтобы ввести эти параметры в своих контроллерах:
public class TransfertController : Controller
{
private IOptions<AppSettings> AppSettings;
public TransfertController(IOptions<AppSettings> appSettings)
{
if (AppSettings == null) throw new ArgumentNullException(nameof(appSettings));
AppSettings = appSettings;
}
}
Но бросить NullReferenceException
как мой параметр appSettings
равно нулю.
Что не хватает?
[Редактировать]: как примечание стороны, эта линия:
Configuration["AppSettings:CloudStorageContainerReference"]
Возвращает фактически правильное одно значение.
Hawk eye ... thanks –