更改HttpClient的基址

时间:2018-09-06 03:10:09

标签: c# dotnet-httpclient

编写使用HttpClient的应用程序时,我的方法与this post相同,换句话说,我不使用using ,而是使用静态HttpClient。当我只想与一台服务器通信时,我没有任何问题。 (我将IP地址设置为BaseAddress,然后继续)

现在,在开始使用HttpClient之后无法更改BaseAddress的问题上,我和this question有相同的问题。

该问题的答案给出了无法完成的解释。您不能更改BaseAddress。

所以我的问题(与链接的问题不同,而不是重复的问题)是如果我们想更改IP地址以与其他服务器进行通信该怎么办?

我们应该实例化另一个HttpClient吗? (不,我们不会使用using)如何正确地从这里开始?

1 个答案:

答案 0 :(得分:6)

按现状,您不能更改基址。

  

我们如何正确地从这里开始?

不要设置基址,而只将完整地址用于请求。

这样,同一客户端可以用于所有其他请求,否则您将需要为每个基址创建一个新客户端,这也将使拥有单个客户端的优势失效。

asp.net core 2+中的客户端工厂此后已解决了与拥有多个客户端相关的问题。

  

处置客户端不是强制性的,但是这样做会取消所有正在进行的请求,并确保在调用Dispose之后不能使用给定的HttpClient实例。工厂负责跟踪和处置HttpClient实例使用的重要资源,这意味着HttpClient实例通常可以视为不需要处置的.NET对象。

     

这样做的效果是,人们今天不再需要某些常见的模式来处理HttpClient实例,例如,使一个HttpClient实例长时间处于活动状态。有关工厂确切执行的工作及其解决的模式的文档将可用,但尚未完成。

完整的文档Use HttpClientFactory to implement resilient HTTP requests