编写使用HttpClient的应用程序时,我的方法与this post相同,换句话说,我不使用using ,而是使用静态HttpClient。当我只想与一台服务器通信时,我没有任何问题。 (我将IP地址设置为BaseAddress
,然后继续)
现在,在开始使用HttpClient之后无法更改BaseAddress的问题上,我和this question有相同的问题。
该问题的答案给出了无法完成的解释。您不能更改BaseAddress。
所以我的问题(与链接的问题不同,而不是重复的问题)是如果我们想更改IP地址以与其他服务器进行通信该怎么办?
我们应该实例化另一个HttpClient吗? (不,我们不会使用using
)如何正确地从这里开始?
答案 0 :(得分:6)
按现状,您不能更改基址。
我们如何正确地从这里开始?
不要设置基址,而只将完整地址用于请求。
这样,同一客户端可以用于所有其他请求,否则您将需要为每个基址创建一个新客户端,这也将使拥有单个客户端的优势失效。
asp.net core 2+中的客户端工厂此后已解决了与拥有多个客户端相关的问题。
处置客户端不是强制性的,但是这样做会取消所有正在进行的请求,并确保在调用Dispose之后不能使用给定的HttpClient实例。工厂负责跟踪和处置HttpClient实例使用的重要资源,这意味着HttpClient实例通常可以视为不需要处置的.NET对象。
这样做的效果是,人们今天不再需要某些常见的模式来处理HttpClient实例,例如,使一个HttpClient实例长时间处于活动状态。有关工厂确切执行的工作及其解决的模式的文档将可用,但尚未完成。
完整的文档Use HttpClientFactory to implement resilient HTTP requests