Как получить доступ к конфигурации Azure Web App на веб-странице stati c - PullRequest
2 голосов
/ 25 апреля 2020

У меня есть простая настройка:

  • Azure Веб-приложение с запущенным приложением c реакции
  • Azure Приложение функций, доступ к API-уровню база данных, и она вызывается из веб-приложения stati c

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

Я хотел бы использовать конфигурацию Web App для внедрения root uri API, чтобы он указывал на API в соответствующем слоте. Таким образом, сайт stati * staging c должен указывать на API-интерфейс производства.

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

Доступ к конфигурации работает нормально для приложения функций; Я предполагаю, потому что это работает узел.

1 Ответ

2 голосов
/ 04 мая 2020

Конфигурация веб-приложения доступна в качестве переменных среды на сервере. Вы не сможете получить доступ к этим переменным в приложении stati c реагировать, которое работает на клиенте.

Вам понадобится какое-то промежуточное программное обеспечение , способное считывать и выставлять переменные среды через API.

Вы можете использовать ASP. NET Core с шаблоном проекта React для создания обоих, ASP. NET Core проекта, который действует как API и стандарт Проект CRA React действует как пользовательский интерфейс, но с удобством размещения как в одном проекте приложения, который может быть собран и опубликован как единое целое. ( Источник ).

Тогда вам придется написать небольшой контроллер, который выставляет конфигурации. Вот пример:

public class MyOptions
{
    public string ApiUri { get; set; }
}

[ApiController]
[Route("[controller]")]
public class ConfigurationController : ControllerBase
{
    private readonly MyOptions _options;

    public ConfigurationController(IOptions<MyOptions> options)
    {
        _options = options.Value;
    }

    [HttpGet]
    public MyOptions GetConfigurations()
    {
        return _options;
    }
}

Вам также необходимо настроить параметры в startup.cs :

public void ConfigureServices(IServiceCollection services)
{
    services.Configure<MyOptions>(Configuration.GetSection(nameof(MyOptions)));
    services.AddControllers();
}

Теперь вы можете установить начальное значение в пределах appsettings. json:

{
  "MyOptions": {
    "ApiUri" :  "https://myapp.domain.com/api" 
  }
}

И вы также можете перезаписывать параметры, используя Azure Конфигурации веб-приложения (промежуточное ПО также настроено на использование переменных среды и что Переменные окружения перезаписывают настройки приложений. json)

Теперь последнее, что вам нужно сделать, - это получить настройки в вашем пользовательском интерфейсе stati c, используя:

window.location.host + "/api/configuration"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...