我目前正在开发 .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>
1 回答
慕的地10843
TA贡献1785条经验 获得超8个赞
应用程序设置是每个环境。这意味着您需要通过设置ASPNETCORE_ENVIRONMENT环境变量或blazor-environment响应标头在服务器端设置环境变量:https ://learn.microsoft.com/en-us/aspnet/core/blazor/fundamentals/environments ?view=aspnetcore-3.1
Blazor 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
添加回答
举报
0/150
提交
取消
