Blazor WebAssembly应用程序在执行导致Null的方法后加载配置值。初始化后,它将返回正确的值。
我遵循了Microsoft文档。
应用程序设置文件:
wwwroot/appsettings.json
我的组件.razor:
@page "/"
<h1>Configuration example</h1>
<p>Message: @Configuration["message"]</p>
@code {
protected override async Task OnParametersSetAsync()
{
await trying to read Configuration["Message"];
}
}
我的程序.cs文件:
public class Program
{
public static async Task Main(string[] args)
{
var builder = WebAssemblyHostBuilder.CreateDefault(args);
builder.RootComponents.Add<App>("app");
builder.Services.AddTransient(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) });
await builder.Build().RunAsync();
}
}
我的导入剃须刀(_I(
@using System.Net.Http
@using System.Net.Http.Json
@using Microsoft.AspNetCore.Components.Forms
@using Microsoft.AspNetCore.Components.Routing
@using Microsoft.AspNetCore.Components.Web
@using Microsoft.AspNetCore.Components.WebAssembly.Http
@using Microsoft.Extensions.Configuration
@using Microsoft.JSInterop
@inject IConfiguration Configuration;
注意:要明白,我得到的值是正确的,但总是先为null,然后用正确的值重新渲染,我使用OnParametersSetAsync((作为入口点,我知道每次参数更改时OnParametersSet异步((都会更改。但是配置值应该是常量而不是null,对吗
我今天尝试从appsettings.json获取连接字符串值时遇到了同样的问题。尝试重新启动Visual Studio,它就会正常工作。
组件在加载数据之前和之后实例化两次。这是为了更快地显示页面,然后加载数据。
为什么Blazor渲染组件两次
为什么Blazor生命周期方法被执行两次?
组件加载上的加载数据
https://learn.microsoft.com/en-us/aspnet/core/blazor/components/lifecycle?view=aspnetcore-3.1#预提交后的状态重新连接
它在从3.2.0更新到3.2.1 的blazor nuget包后工作