提问人:Waseem Ishaq 提问时间:8/23/2023 最后编辑:Waseem Ishaq 更新时间:8/23/2023 访问量:36
Sytem.Net.Http.HttpClient 在 .net core 和 .net framework 中的工作方式不同
Sytem.Net.Http.HttpClient works differently in .net core and .net framework
问:
我构建了两个 API 的工作方式相同,一个在 .net 中,另一个在 .net core 中。
我还有另一个 .net 核心项目,我在其中一一使用这些 api。有趣的是,.net 项目工作正常,但在 .net core 中,它在“显示”时出现异常。Wait();“。
例外:
“System.AggregateException:'发生一个或多个错误。(无法将当前 JSON 数组(例如 [1,2,3])反序列化为类型“ConsumeApi.Models.Employee”,因为该类型需要 JSON 对象(例如 {“name”:“value”})才能正确反序列化。 若要修复此错误,请将 JSON 更改为 JSON 对象(例如 {“name”:“value”}),或者将反序列化类型更改为数组或实现集合接口的类型(例如 ICollection、IList),例如可以从 JSON 数组反序列化的 List。还可以将 JsonArrayAttribute 添加到类型中,以强制它从 JSON 数组反序列化。 路径 '',第 1 行,位置 1。
下面是我使用 API 的 .net core 项目的 ClientLogic 文件。
using ConsumeApi.Models;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Configuration;
using System.Net;
namespace ConsumeApi.Client
{
public class CL
{
List<Employee> list = new List<Employee>();
HttpClient client = new HttpClient();
string ApiUrl = new ConfigurationBuilder().AddJsonFile("appsettings.json").Build().GetSection("ApiUrl")["Url"];
[HttpGet]
public List<Employee> GAE()
{
List<Employee> list = new List<Employee>();
client.BaseAddress = new Uri(ApiUrl);
var response = client.GetAsync("values");
response.Wait();
var test = response.Result;
if (test.IsSuccessStatusCode)
{
var display = test.Content.ReadAsAsync<List<Employee>>();
display.Wait();
list = display.Result;
}
return list;
}
[HttpPost]
public bool AE(Employee emp)
{
client.BaseAddress = new Uri(ApiUrl);
var response = client.PostAsJsonAsync<Employee>("values", emp);
response.Wait();
var test = response.Result;
return (test.IsSuccessStatusCode);
}
[HttpGet]
public Employee GE(int id)
{
Employee e = null;
client.BaseAddress = new Uri(ApiUrl);
var response = client.GetAsync("values?id=" + id.ToString());
response.Wait();
var test = response.Result;
if (test.IsSuccessStatusCode)
{
var display = test.Content.ReadAsAsync<Employee>();
display.Wait();
e = display.Result;
}
return (e);
}
[HttpPost]
public bool UE(int id, Employee emp)
{
client.BaseAddress = new Uri(ApiUrl);
var response = client.PutAsJsonAsync<Employee>("values?id=" + id.ToString(), emp);
response.Wait();
var test = response.Result;
return (test.IsSuccessStatusCode);
}
[HttpPost, ActionName("Delete")]
public bool DE(int id)
{
client.BaseAddress = new Uri(ApiUrl);
var response = client.DeleteAsync("values/" + id.ToString());
response.Wait();
var test = response.Result;
return (test.IsSuccessStatusCode);
}
}
}
答: 暂无答案
评论