我有一個客戶服務。在該服務中,我有以下方法:爲什麼我的HttpClient調用不會返回預期的Json?
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服務的web api 2還是asp.net核心? – Nkosi
'Client.GetStringAsync'方法裏面有什麼?你說「客戶」是你的業務對象,代表你的業務客戶,而不是通信客戶,對嗎? –
@ProfK問題是可挽回的是你提供[mcve]。現在需要澄清問題的問題太多了。 Brian問了一個關於'GetStringAsync'的好問題。這是一個失敗點。我認爲它來自HttpClient。還有web api的設計方式。 – Nkosi