azz*_*123 1 javascript c# webassembly asp.net-core blazor
我目前正在开发 .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!"
}
}
Run Code Online (Sandbox Code Playgroud)
appsettings.Development.json:
{
"App": {
"Environment": "Development"
}
}
Run Code Online (Sandbox Code Playgroud)
appsettings.Staging.json:
{
"App": {
"Environment": "Staging"
}
}
Run Code Online (Sandbox Code Playgroud)
在我的 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; }
}
Run Code Online (Sandbox Code Playgroud)
此外,我尝试根据设置的环境变量(此处在脚本中)加载正确的 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>
Run Code Online (Sandbox Code Playgroud)
不幸的是,这个编码不起作用 - 我总是收到错误:
您知道如何在 JavaScript 中正确覆盖 Blazor.start 启动过程吗?
不幸的是,目前还没有太多文档。
您知道如何在 Blazor WASM 中加载不同的 appsettings.*.json 配置吗?
应用程序设置根据环境而定。这意味着您需要通过设置ASPNETCORE_ENVIRONMENT环境变量或blazor-environment响应标头来设置服务器端的环境变量:https://learn.microsoft.com/en-us/aspnet/core/blazor/fundamentals/environments ?查看=aspnetcore-3.1
Blazor Wasm 启动脚本将加载与接收到的blazor-environment相对应的appsettings.json和appsettings.{Environment}.json文件,并使用这些文件中的数据填充 。WebAssemblyHostBuilder.Configuration
然后您可以配置您的组件、服务或 js。
https://learn.microsoft.com/en-us/aspnet/core/blazor/fundamentals/configuration?view=aspnetcore-3.1
| 归档时间: |
|
| 查看次数: |
6498 次 |
| 最近记录: |