Как настроить конфигурацию appsettings.json для каждой среды в клиентском приложении Blazor?

#c# #blazor #blazor-client-side #.net-5

#c# #blazor #blazor-на стороне клиента #.net-5

Вопрос:

У меня есть клиентское приложение в blazor, которое подключается к серверу. Когда я запускаю его на своем локальном компьютере в dev, имя хоста сервера dev.someurl.com

Когда он работает, он live.someurl.com

Я настроил внедрение IConfiguration , которое загружает appsettings.Development.json автоматически, однако я не могу изменить среду. В документах говорится, что при публикации он будет использовать appsettings.Производство.json однако это не так, поскольку я опубликовал его в разделе Release build и видел это.

Среда, похоже, доступна только для чтения. С помощью приложения signalr .net core я могу это сделать:

return Host.CreateDefaultBuilder(args).UseEnvironment(environmentName)

Однако с клиентским приложением blazor у вас есть это:

var builder = WebAssemblyHostBuilder.CreateDefault(args);

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

Чтение конфигурационного файла appsettings происходит автоматически, встроено в этот код:

 builder.Services.AddSingleton(provider =>
{
    var config = provider.GetService<IConfiguration>();
    return config;
});
 

Есть идеи, как я могу обойти это?

Будучи клиентским приложением blazor, вы, очевидно, можете установить среду в заголовке, но я не могу понять, как это сделать программно. Идеи приветствуются.

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

1. Имя среды определяется заголовком ответа Blazor-Environment запроса /_framework/blazor.boot.json.

2. По-видимому, вы можете поместить его в index.html as <head><meta http-equiv="Blazor-Environment" content="Staging" /></head> , но неясно, как вы делаете это динамичным.

3. если вы поместите его в index.html это не динамично. В противном случае это серверная среда .net

4. динамический, например, когда я создаю проект, я хочу, чтобы он был настроен в соответствии с моей конфигурацией, например, debug / release, чтобы я мог легко опубликовать его и использовать другую конфигурацию

5. Это так не работает, среда определяется хостом. И, ИМО, не рекомендуется определять среду выполнения во время сборки. Вы должны развернуть релизную версию для своего промежуточного, пользовательского интерфейса и / или производства