Blazor GetAsync请求返回401状态码

时间:2019-12-13 18:10:49

标签: c# entity-framework asp.net-core .net-core blazor

我是新手,尝试使用.NET Core / EF Core 3和Visual Studio 2019创建应用程序。我已经设置了数据库模型和API,以获取所有地址(/ api / Address)并浏览至此在浏览器中返回数据库中的所有记录。但是我在Razor文件中的My GetAsync方法返回401,最后返回null。

这是我的剃刀代码:

@functions 
{
   Address[] addresses;
   protected override async Task OnInitializedAsync()
   {
     addresses = await Http.GetJsonAsync<Address[]>("api/Address");
   }
}

这是我的API

[Produces("application/json")]
[Route("api/[controller]")]
[ApiController]
public class AddressController : ControllerBase
{
    private readonly MyDataContext _context;
    // GET: api/Address
    [HttpGet]
    public async Task<ActionResult<IEnumerable<Address>>> GetAddresses()
    {
        return await _context.addressesDbSet.ToListAsync();
    }
}

我得到的所有错误都表示

 HttpRequestException: Response status code does not indicate success: 401 (Unauthorized).

这里没有进一步的说明,我无法理解其原因,任何建议或建议都将不胜感激。

1 个答案:

答案 0 :(得分:1)

我已经解决了这个问题,下面是我的解决方案,以防其他人遇到同样的问题。

在注入HttpClient之后,我在调用GetAsSync之前将以下参数传递给HttpClient

 var handler = new HttpClientHandler() 
  { 
           UseDefaultCredentials = false, Credentials = 
           System.Net.CredentialCache.DefaultCredentials, AllowAutoRedirect = true 
   };
    Http = new HttpClient(handler);
    Http.BaseAddress = new Uri(/*YOUR BASE Uri*/);

    Addresses = await Http.GetJsonAsync<Address[]>("api/Address");