【问题标题】:Nightmare issue with Angular and WebApi2.2 JSON parseAngular 和 WebApi2.2 JSON 解析的噩梦问题
【发布时间】:2020-02-10 06:17:12
【问题描述】:

这就是问题所在:

我的 WebAPI 2.2 (ASP NET) 有一个控制器,它从关于客户端的数据库上下文信息返回。看起来是这样的:

public class ClientsController : ControllerBase
{ 
   [HttpGet("[action]")]
   public  IEnumerable<Client> GetClient()
   { 
      return _context.Client;
   }
}

客户端应用程序(以角度编写)应接收数据并显示它。只要我在控制器中硬编码一些数据,它就可以正常工作,但是当它是 _context.Client 时,控制台中会抛出一个错误(如下)。

角度代码:

  public clients: Client[];

  constructor(http: HttpClient, @Inject('BASE_URL') baseUrl: string) {
    http.get<Client[]>(baseUrl + 'api/Clients/GetClient').subscribe(result => {
      console.log(result);
      this.clients = result;
    }, error => console.error(error));
  }

错误是 SyntaxError: Unexpected end of JSON input at JSON.parse () at XMLHttpRequest.l, message: Http failure during parsing for http://localhost:8080/api/Clients/GetClient

我对这个 Client[] 数组持怀疑态度,有人知道类似问题吗?

【问题讨论】:

  • 看来您没有收到有效的 json。
  • 是的,我认为这可能是问题所在,但我应该改变什么?
  • 我测试的时候效果很好。你用的是asp.net还是asp.net core? _context.Client 有内容吗?您可以尝试返回 Ok() 吗?

标签: angular asp.net-core asp.net-web-api2


【解决方案1】:

我认为你需要像这样声明你的 api

[HttpGet]
[ActionName("GetClient")]
public  IEnumerable<Client> GetClient(){...}

但不确定 Web API 2.2,请查看docs (*)

(*)当然你已经阅读过文档了,但是要小心,它和 ActionName 不是同一个 Action,而且事情变化得如此之快(真的是个噩梦)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-21
    • 2020-03-14
    相关资源
    最近更新 更多