我正在.Net Core2.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>();
那么我到底做错了什么呢?我是否需要使用AddTemperent()更改AddSingleton,或者是否存在任何其他问题.还有一个问题是,我需要在响应之后使用_client.Dispose(),因为我遵循的教程没有使用Dispose方法,所以我对此有点困惑.