3 回答
TA贡献1797条经验 获得超6个赞
也许我的两分钱会帮助某人。
我在调试应用程序时刷新页面时遇到了这个问题。
我使用的是单例,但每次刷新时,它都试图设置基地址。所以我只是把它包裹在一个检查中,看看是否已经设置了基地址。
我的问题是,它试图设置 baseAddress,即使它已经设置。您不能使用 httpClient 执行此操作。
if (_httpClient.BaseAddress == null)
{
_httpClient.BaseAddress = new Uri(baseAddress);
}
TA贡献1875条经验 获得超5个赞
该问题是由重置 httpclient 的同一实例的 BaseAddress 和标头引起的。
我试过
if (_httpClient.BaseAddress == null)
但我并不热衷于此。
在我看来,更好的解决方案是使用 httpclientFactory。这将在使用后终止并垃圾回收 httpclient 的实例。
private readonly IHttpClientFactory _httpClientFactory;
public Foo (IHttpClientFactory httpClientFactory)
{
_httpClientFactory = httpClientFactory;
}
public httpresponse Bar ()
{
_httpClient = _httpClientFactory.CreateClient(command.ClientId);
using var response = await _httpclient.PostAsync(uri,content);
return response;
// here as there is no more reference to the _httpclient, the garbage collector will clean
// up the _httpclient and release that instance. Next time the method is called a new
// instance of the _httpclient is created
}
- 3 回答
- 0 关注
- 245 浏览
添加回答
举报