我是新手,尝试使用.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).
这里没有进一步的说明,我无法理解其原因,任何建议或建议都将不胜感激。
答案 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");