猿问

将不同的 appsettings.json 加载到 Blazor WebAssembly

我目前正在开发 .NET Standard 2.1 Blazor WebAssembly 应用程序。我尝试将不同的 appsettings.{Environment}.json 配置加载到我的 Window 命名空间 (JavaScript) 中。


因此,我遵循这篇博文:


https://jkdev.me/blazor-appsettings/


到目前为止一切顺利:我在我的 wwwroot 目录中添加了 3 个 appsettings.*.json 文件:


应用设置.json:


{

  "App": {

    "Message": "Hello World!"

  }

}

appsettings.Development.json:


{

  "App": {

    "Environment": "Development"

  }

}

应用设置.Staging.json:


{

  "App": {

    "Environment": "Staging"

  }

}

在我的 program.cs Main 方法中,我构建了新的配置设置,如下所示:


public class Program

{

    public static async Task Main(string[] args)

    {

        var builder = WebAssemblyHostBuilder.CreateDefault(args);

        builder.RootComponents.Add<App>("app");


        ConfigureServices(builder.Services);


        await builder.Build().RunAsync();

    }


    private static void ConfigureServices(IServiceCollection services)

    {

        services.AddSingleton(

             provider =>

                 {

                     var config = provider.GetService<IConfiguration>();


                     return config.GetSection("App").Get<AppConfiguration>();

                 });


    }

}


public class AppConfiguration

{

    public string Environment { get; set; }

}

进一步,我尝试根据设置的环境变量(在脚本中)加载正确的 appsettings.json,因此我需要像这样覆盖 Blazor 启动过程:


<script src="_framework/blazor.webassembly.js" autostart="false"></script>

<script>

    const environmentName = 'Staging';

    Blazor.start({

        loadBootResource: function(type, name, defaultUri, integrity) {

            // Adds a custom HTTP header to the outbound requests

            // To retain the default integrity checking behavior, it's necessary to pass through the 'integrity' parameter

            return fetch(defaultUri,

                {

                    cache: 'no-cache',

                    integrity: integrity,

                    headers: { 'blazor-environment': environmentName }

                });

        }

    });

</script>


繁星淼淼
浏览 338回答 1
1回答

慕的地10843

应用程序设置是每个环境。这意味着您需要通过设置ASPNETCORE_ENVIRONMENT环境变量或blazor-environment响应标头在服务器端设置环境变量:https ://learn.microsoft.com/en-us/aspnet/core/blazor/fundamentals/environments&nbsp;?view=aspnetcore-3.1Blazor Wasm 启动脚本将加载与收到的blazor环境对应的 appsettings.json和appsettings.{Environment}.json文件,并在这些文件中填充数据。WebAssemblyHostBuilder.Configuration然后您可以配置到您的组件、服务或 js。https://learn.microsoft.com/en-us/aspnet/core/blazor/fundamentals/configuration?view=aspnetcore-3.1
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答