当 Blazor 的 GetAsync 请求返回 401 状态码时,意味着用户未经身份验证或没有足够的权限来访问请求的资源。以下是一种可能的解决方法:
在 Blazor 的 HttpClient
实例上使用 DefaultRequestHeaders
属性将身份验证标头添加到每个请求中。这样可以确保每个请求都带有身份验证信息。
下面是一个使用 HttpClient
发送 GET 请求并处理 401 状态码的示例:
@page "/fetchdata"
@using System.Net.Http
@using System.Net.Http.Json
@inject HttpClient Http
Weather forecast
@if (forecasts == null)
{
Loading...
}
else
{
Date
Temperature (C)
Summary
@foreach (var forecast in forecasts)
{
@forecast.Date.ToShortDateString()
@forecast.TemperatureC
@forecast.Summary
}
}
@code {
private WeatherForecast[] forecasts;
protected override async Task OnInitializedAsync()
{
// 添加身份验证标头
Http.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", "");
try
{
forecasts = await Http.GetFromJsonAsync("api/weatherforecast");
}
catch (HttpRequestException ex) when (ex.StatusCode == HttpStatusCode.Unauthorized)
{
// 处理 401 状态码
// 可以在这里执行相应的操作,如重定向到登录页面或显示错误消息
Console.WriteLine("Unauthorized access!");
}
}
public class WeatherForecast
{
public DateTime Date { get; set; }
public int TemperatureC { get; set; }
public string Summary { get; set; }
}
}
在上面的示例中,我们将身份验证标头添加到 DefaultRequestHeaders.Authorization
属性中。请将
替换为实际的身份验证令牌。
当请求返回 401 状态码时,我们可以通过捕获 HttpRequestException
并检查其 StatusCode
属性来处理该错误。在示例中,我们在控制台打印了一条错误消息,但你可以根据你的需求自定义处理逻辑。