首页 > 解决方案 > 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");
            }
      }
}

标签: c#asp.net-coreblazor-server-sideblazor-client-sideasp.net-blazor

解决方案


在你的 中尝试这样的事情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.
        }
    }

推荐阅读