Реализуйте «режим обслуживания» в ядре asp. net - PullRequest
0 голосов
/ 04 марта 2020

Как вы могли бы реализовать "Режим обслуживания" на уровне сайта для вашего Asp. Net Базового приложения?

Требования:

  • Все запросы контроллера отвечают с помощью тот же статус c Страница «Режим обслуживания»
  • Необходимо включить переключатель в бэкэнде, чтобы включить или отключить режим обслуживания (так должно происходить во время выполнения)

Моя лучшая идея - это фильтр действий на всех контроллерах, где я проверяю режим обслуживания в коде (бит в базе данных) и просто возвращаю страницу режима обслуживания, если режим обслуживания истинен.

1 Ответ

0 голосов
/ 04 марта 2020

Лучший способ сделать это. Вы можете использовать переменную окружения в своем приложении, но вам необходимо изменить VariableName всякий раз, когда вам нужно отключить обслуживание.

"IIS Express (Staging)": {
  "commandName": "IISExpress",
  "launchBrowser": true,
  "environmentVariables": {
    "ASPNETCORE_ENVIRONMENT": "Staging"
  }
}

Посмотрите на приведенный выше код из файлов launchSettings. json. который содержит набор ASPNETCORE_ENVIRONMENT в качестве промежуточного этапа.

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
   if (env.IsDevelopment())
   {
       app.UseDeveloperExceptionPage();
       app.UseDatabaseErrorPage();
       app.UseBrowserLink();
   }
   else
   {
       app.UseExceptionHandler("/Home/Maintainance");
   }
}

Даже вы могли бы также изменить некоторый контент на вашей странице layout.cs html в соответствии с вашей переменной среды.

<environment names="Development">
    <link rel="stylesheet" href="<your-regular-css-files>" />
</environment>
<environment names="Staging,Production">
    <link rel="stylesheet" href="<your-maintainance-css-files>" />
</environment>

Но вот одно из ваших требований - чтобы вы могли менять режим обслуживания на задней стороне. В этом сценарии измените значение JSON файла ASPNETCORE_ENVIRONMENT из вашей панели администратора. Я думаю, что это должно работать нормально.

...