【发布时间】:2018-04-10 02:51:33
【问题描述】:
我有一个客户服务。在该服务中,我有以下方法:
public async Task<IEnumerable<Client>> ReadAsync()
{
using (var conn = new SqlConnection(_connString))
using (var cmdRead = new SqlCommand("SELECT * FROM Client", conn))
{
conn.Open();
var ret = new List<Client>();
var reader = await cmdRead.ExecuteReaderAsync();
while (reader.Read())
{
var client = BuildFromDataReader(reader);
ret.Add(client);
}
return ret;
}
}
此方法由 Web API 控制器操作调用,如下所示:
[HttpGet]
public async Task<IEnumerable<Client>> Get()
{
// API side.
IEnumerable<Client> clients = await _clients.ReadAsync();
return clients;
}
我希望内容协商的默认值为 JSON,因此希望此操作返回 JSON 编码的Client 列表。
我的所有这些尝试使用 Web API 的客户端看起来更像这样:
public async Task<IEnumerable<Client>> ReadAsync()
{
var json = await Client.GetStringAsync("api/Clients/Get");
var clients = JsonConvert.DeserializeObject<IEnumerable<Client>>(json);
return clients;
}
在断点检查时,json 的值是 "value"(包括引号)。我尝试了什么?上面的代码。我期望 Web API 操作返回的 json 在哪里?
PS:我正忙于一个 ASP.NET Core 项目,所以我们也在使用 NewtonSoft JSON。
【问题讨论】:
-
等一下,我正在看。快速提问。是 web service web api 2 还是 asp.net core?
-
Client.GetStringAsync方法里面有什么?您说Client是您的业务对象,代表您的业务客户,而不是通信客户,对吧? -
@ProfK 如果您提供minimal reproducible example,问题是可以挽救的。现在有太多的问题需要问来澄清问题。 Brian 问了一个关于
GetStringAsync的好问题。这是一个失败点。我认为它来自 HttpClient。还有web api的设计方式。 -
您是否尝试过使用 Postman 或 curl 之类的工具来访问
api/Clients/Get端点? -
@Nkosi 我确实在问题的底部声明它是核心。
标签: c# json asp.net-core json.net