我正在 .Net Core 2.1 中创建一个应用程序,我正在使用 http 客户端进行 Web 请求。问题是我必须发送并行调用以节省时间,为此我使用了 Task.WhenAll() 方法,但是当我点击此方法时,我收到错误消息“此实例已启动一个或多个请求。只能修改属性在发送第一个请求之前”以前我使用的是 RestSharp,一切都很好,但我想使用 httpclient。这是代码:
public async Task<User> AddUser(string email)
{
var url = "user/";
_client.BaseAddress = new Uri("https://myWeb.com/");
_client.DefaultRequestHeaders.Accept.Clear();
_client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(Constants."application/json"));
_client.DefaultRequestHeaders.Add("Authorization", "Bearer " + token);
var json = new {email = email }
var response = await _client.PostAsJsonAsync(url,json);
if (response .IsSuccessStatusCode)
{ ....
这是构造函数:
private readonly HttpClient _httpClient;
public UserRepository(HttpClient httpClient)
{
_httpClient = httpClient;
}
方法调用:
var user1 = AddUser("user@user.com");
var user2 = AddUser("test@test.com");
await Task.WhenAll(user1, user2);
这是启动配置:
services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
那么我做错了什么?我需要使用 AddTransient() 更改 AddSingleton 还是有任何其他问题。还有一个问题,我需要在响应后使用 _client.Dispose() 吗,因为我遵循的教程没有使用 dispose 方法,所以我对此有点困惑。
互换的青春
慕田峪4524236
相关分类