Blazor文档阅读 》 Fundamentals 。

ASP.NET Core Blazor configuration

BlazorWASM默认从下面设置文件中读取设置:

  • wwwroot/appsettings.json
  • wwwroot/appsettings.{ENVIRONMENT}.json

App settings configuration

appsettings.json示例:

{
  "h1FontSize": "50px"
}

使用到上述参数的razor文件:

@page "/configuration-example"
@using Microsoft.Extensions.Configuration
@inject IConfiguration Configuration

<h1 style="font-size:@Configuration["h1FontSize"]">
    Configuration example
</h1>

注意到@inject IConfiguration Configuration这一行所提供的Configuration例现。

略过关于如何使用HttpClient来读取服务端的数据部分。

Memory Configuration Source

如何从内存读取数据,首先要使用到以下命名空间:

using Microsoft.Extensions.Configuration.Memory;

然后在Program.cs的Program.Main中:

var vehicleData = new Dictionary<string, string>()
{
    { "color", "blue" },
    { "type", "car" },
    { "wheels:count", "3" },
    { "wheels:brand", "Blazin" },
    { "wheels:brand:type", "rally" },
    { "wheels:year", "2008" },
};

var memoryConfig = new MemoryConfigurationSource { InitialData = vehicleData };

builder.Configuration.Add(memoryConfig);

具体使用也是通过IConfiguration。

可以使用IConfiguration.GetSection只获取配置中的某个分区:

@code {
    protected override void OnInitialized()
    {
        var wheelsSection = Configuration.GetSection("wheels");

        ...
    }
}

Authentication configuration

略。

Logging configuration

配置所依赖的NuGet包是:

<PackageReference Include="Microsoft.Extensions.Logging.Configuration" Version="{VERSION}" />

在appsettings.json中设置录定:

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  }
}

添加到当前配置集中:

builder.Logging.AddConfiguration(
    builder.Configuration.GetSection("Logging"));

Host builder configuration

从WebAssemblyHostBuilder.Configuration 重新加载配置,在Program.Main中加入:

var hostname = builder.Configuration["HostName"];

Cached configuration

PWA的配置更新只能在重新部署PWA的时候执行,因为:

  • 用户已经缓存了配置文件
  • PWA的service-worker.js以及service-worker-assets.js必须在编译的时候重建

(本篇完)