在
Program.cs
:
builder.Services.AddScoped<HttpClient>(s => {
var httpClient = new HttpClient
{
BaseAddress = new Uri("https://localhost:7273/")
};
return httpClient;
});
builder.Services.AddScoped<IApiService, ApiService>();
在
Home.razor.cs
:
[Inject]
protected IApiService? ApiService { get; set; }
protected override async Task OnInitializedAsync()
{
if (ApiService != null)
{
User = await ApiService.GetDataAsync<AuthUserModel>("/api/admin/auth");
Debug.WriteLine("OK");
}
else
{
Debug.WriteLine("ApiService is not injected");
}
await base.OnInitializedAsync();
}
为什么我总是收到“ApiService 未注入”消息?
感谢和问候!
首先,您应该确保将这些代码放在组件基类中而不是剃刀页面中。
我还在我身边创建了一个测试演示,我在 blazor 服务器应用程序中使用静态 SSR,效果很好。
下面是我的测试演示:
Home.剃须刀:
@页面“/” @inherits HomeBase
首页
总部:
public partial class HomeBase : ComponentBase
{
[Inject] protected IApiService ApiService { get; set; }
protected override async Task OnInitializedAsync()
{
try
{
var result = await ApiService.GetDataAsync<AuthUserModel>("/api/admin/auth");
Debug.WriteLine("OK");
}
catch (Exception ex)
{
Debug.WriteLine($"Error: {ex.Message}");
}
}
}
结果: