c# - Blazor 服务器项目
问题描述
我是 C# 的新手。试图在 Blazor 服务器项目中调用 rest api,但出现此错误:JsonException: '<' is an invalid start of a value。路径:$ | 行号:1 | 字节位置内线:0。
我的服务:
public class EmployeeService : IEmployeeService
{
private readonly HttpClient httpClient;
public EmployeeService(HttpClient httpClient)
{
this.httpClient = httpClient;
}
public async Task<IEnumerable<Employee>> GetEmployees()
{
return await httpClient.GetJsonAsync<Employee[]>("api/employees");
}
}
我的控制器:
[Route("/api/[controller]")]
[ApiController]
public class EmployeesController : ControllerBase
{
private readonly IEmployeeRepository employeeRepository;
//EmployeeRepository objemployee = new EmployeeRepository();
public EmployeesController(IEmployeeRepository employeeRepository)
{
this.employeeRepository = employeeRepository;
}
[HttpGet]
public async Task<ActionResult> GetEmployees()
{
try
{
return Ok(await employeeRepository.GetEmployees());
}
catch (Exception)
{
return StatusCode(StatusCodes.Status500InternalServerError, "Error retrieving data from DB");
}
}
}
解决方案
在你的 中尝试这样的事情EmployeeService
,这将有助于了解调试时出了什么问题。您可以检查response.ReasonPhrase
开始。
public async Task<IEnumerable<Employee>> GetEmployees()
{
var response = await httpClient.GetAsync("api/employees");
if (response.IsSuccessStatusCode)
{
var result = await JsonSerializer.DeserializeAsync<Employee[]>(await response.Content.ReadAsStreamAsync(), new JsonSerializerOptions() { PropertyNameCaseInsensitive = true });
return result;
}
else
{
//handle the response that was not successful here.
}
}
推荐阅读
- python - 对作为列表导入的 csv 文件行的早期引用会破坏我的读取数据集?
- java - 将数据插入 JList 而不删除另一个
- syntax - 使用 casetovars 重组时消失的变量
- javascript - 如何打破 webpack 钩子中的循环
- pdf - 如何在 ps 或 pdf 转换中将终端颜色代码视为颜色?
- rest - 您是否应该更改 API 端点中的参考数据
- ejs - 如何通过 SuiteScript 2.0 在 NetSuite 中使用 EJS(嵌入式 JavaScript 模板)
- css - 当我将鼠标悬停在锚点上时,我希望锚点向右移动
- spring-boot - Spring Boot Spring Security 应用程序重新加载登录页面而不是成功或失败
- python - 如何解析python(spyder)中的参数?