异常:“<”是值的无效开头 Blazor WebAssembly
Exception: '<' is an invalid start of a value Blazor WebAssembly
使用服务从 api 接收数据时遇到问题。有人可以帮忙吗?问题是接收 html 数据而不是 json,但不知道为什么,尝试进行反序列化但不起作用。
控制器:
[Route("api/[controller]")]
[ApiController]
public class ItemController : ControllerBase
{
private readonly AppDbContext _appDbContext;
public ItemController(AppDbContext appDbContext)
{
_appDbContext = appDbContext;
}
[HttpGet]
public async Task<IActionResult> GetItems()
{
return Ok(await _appDbContext.Items.ToListAsync());
}
}
服务:
public class ItemService : IItemService
{
private readonly HttpClient _httpClient;
public ItemService(HttpClient httpClient)
{
_httpClient = httpClient;
}
public List<Item> Items { get; set; } = new List<Item>();
public async Task<List<Item>> GetItems()
{
Items = await _httpClient.GetFromJsonAsync<List<Item>>("api/item");
return Items;
}
}
基类:
public class ItemsBase : ComponentBase
{
[Inject]
public IItemService ItemService { get; set; }
protected override async Task OnInitializedAsync()
{
await ItemService.GetItems();
}
}
您的 API 中有一个错误,而不是以 html 的形式返回列表,其返回错误以 <
开头
因此请调试您的 API 端点并查看错误发生的位置
作为@Surinders 回答的后续:
- 在此行上放置一个断点并检查 API 是否命中,然后返回什么。
Items = await _httpClient.GetFromJsonAsync<List<Item>>("api/item");
- 使用 Postman 检查您从 Url 返回的内容。 Postman 是调试 API 的好工具。搜索“邮递员 API”。
使用服务从 api 接收数据时遇到问题。有人可以帮忙吗?问题是接收 html 数据而不是 json,但不知道为什么,尝试进行反序列化但不起作用。 控制器:
[Route("api/[controller]")]
[ApiController]
public class ItemController : ControllerBase
{
private readonly AppDbContext _appDbContext;
public ItemController(AppDbContext appDbContext)
{
_appDbContext = appDbContext;
}
[HttpGet]
public async Task<IActionResult> GetItems()
{
return Ok(await _appDbContext.Items.ToListAsync());
}
}
服务:
public class ItemService : IItemService
{
private readonly HttpClient _httpClient;
public ItemService(HttpClient httpClient)
{
_httpClient = httpClient;
}
public List<Item> Items { get; set; } = new List<Item>();
public async Task<List<Item>> GetItems()
{
Items = await _httpClient.GetFromJsonAsync<List<Item>>("api/item");
return Items;
}
}
基类:
public class ItemsBase : ComponentBase
{
[Inject]
public IItemService ItemService { get; set; }
protected override async Task OnInitializedAsync()
{
await ItemService.GetItems();
}
}
您的 API 中有一个错误,而不是以 html 的形式返回列表,其返回错误以 <
开头因此请调试您的 API 端点并查看错误发生的位置
作为@Surinders 回答的后续:
- 在此行上放置一个断点并检查 API 是否命中,然后返回什么。
Items = await _httpClient.GetFromJsonAsync<List<Item>>("api/item");
- 使用 Postman 检查您从 Url 返回的内容。 Postman 是调试 API 的好工具。搜索“邮递员 API”。