在 ServiceStack 的 .NET 6+ 构建中,HTTP Utils 会创建一个延迟初始化的共享 HttpClient。请在应用程序初始化时、首次调用辅助方法之前设置其处理程序工厂:

ServiceStack.HttpUtils.HttpClientHandlerFactory = () =>
    new System.Net.Http.HttpClientHandler
    {
        UseProxy = true,
        Proxy = new System.Net.WebProxy("http://proxy.example:8080"),
        AutomaticDecompression =
            System.Net.DecompressionMethods.Brotli |
            System.Net.DecompressionMethods.Deflate |
            System.Net.DecompressionMethods.GZip
    };

如果共享客户端已存在,更改此工厂不会重新配置它。当之后的赋值看起来无效时,首先要检查的就是这个时机。可以在该共享客户端创建之前,从 HTTP 代理列表中选择一个 HTTP 端点用于公开路由。

对于代理账户,请通过应用程序的配置设置 WebProxy.Credentials。HttpClientHandler.UseDefaultCredentials 涉及服务器账户,不会自动填充 该代理对象的凭据。

较旧的 HttpWebRequest 和 requestFilter 示例针对的是早期实现。在较新的形式中,请求配置负责请求字段,而处理程序负责连接路由。

已安装自定义客户端工厂或应用程序 HTTP 客户端工厂归属安排时,请予以保留。此处理程序工厂是共享策略;同时运行的不相关路由需要各自拥有的客户端。

相关文章