我目前正在开发 .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>
繁星淼淼
慕的地10843
随时随地看视频慕课网APP
相关分类