Страницы

Поиск по вопросам

среда, 24 октября 2018 г.

Определение настроек prod/dev по connection string

Делаю небольшое веб-приложение для работы с лаками для ногтей.
И нужно мне как-то визуально определять, работаю я в данный момент на продакшн версии сайта или на девелоперской, я обычно смотрю на внешний вид логотипа в шапке: на продакшене выглядит так

А dev версия выглядит так:

И сейчас это сделано через анализ адресной строки, в файле Views/Shared/_Layout.cshtml:
@functions{ private bool IsDevEnv() { return Context.Request.Host.Value.Contains("localhost"); } } .... @if (IsDevEnv()) { Polish Hub } else { Polish Hub }

Однако это не совсем то, что мне нужно: мне нужно проверять параметры sql server connection string, а не hostname сервера. (К сожалению, таковы особености appharbor'а по работе с core на текущий день - в классическом asp.net mvc нормально происходят замены переменных)
Как можно добраться до этих настроек (connection string)в asp.net core?
Можно ли как-то в view добраться до Configuration.GetConnectionString? Или, если нельзя, то с какого уровня определить переменную mode (prod/dev), чтобы пробрасывать её в layout страницы.


Ответ

До настроек во View можно добраться через @inject
Допустим у нас в appSettings.json написано такое
{ "SomeOption" : { "SomeProp" : 1000 } }
Создадим класс MyAppOptions и в нем создадим свойство с названием совпадающим с названием опции
public int SomeProp { get; set; }
Теперь перейдем к Startup.cs в нем у нас уже должно быть поле
private readonly IConfiguration _configuration;
которому присваивается значение через конструктор. Далее переходим в метод ConfigureServices(...) и добавляем такое
services.Configure(_configuration.GetSection("SomeOption"));
Теперь во View
@using Microsoft.Extensions.Options @inject IOptions options
@в нужном месте@ @options.Value.SomeProp

Комментариев нет:

Отправить комментарий