首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何有选择地为flurl客户端设置代理服务器?

如何有选择地为flurl客户端设置代理服务器?
EN

Stack Overflow用户
提问于 2022-10-01 02:03:12
回答 1查看 133关注 0票数 0

是否有根据URL (或基本URL)为flurl客户端定义代理的推荐方法?在我找到的关于这个主题的文档和讨论中,我找不到任何东西(比如使用.NET Flurl/HttpClient设置每个请求代理(或旋转代理)),而如何在Flurl中使用代理来处理web请求?似乎设置了会影响所有调用的设置(除非我误解了它)。

在我们的场景中,应用程序调用不同的端点(其他应用程序)。其中一些端点只能通过代理服务器到达,有些可以直接到达。此外,在某些环境(DEV与PREPROD vs PROD)中,相同的端点可能需要或不需要代理,因此配置可以类似于:

开发人员

前PREPROD

在这个场景中,我假设我们需要三个HTTP客户机(X、Y和Z)。为这些客户端配置代理设置的正确方法是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-21 15:13:48

我建议创建一个新的HttpClient工厂,该工厂接受所描述的这里的代理地址,但不是在全局注册它,而是创建一个按描述的这里创建一个FlurlClientFactory,该这里覆盖FlurlClientFactoryBase并在缓存密钥处使用代理地址,保证每个代理准确地使用一个FlurlClient

代码语言:javascript
运行
复制
public class ProxyFlurlClientFactory : FlurlClientFactoryBase
{
    protected override string GetCacheKey(Url url) => GetProxyForUrl(Url url);

    // Guaranteed to be called only once per proxy
    protected override IFlurlClient Create(Url url) {
        var httpFac = new ProxyHttpClientFactory(GetProxyForUrl(Url url));
        return new FlurlClient().Configure(settings => settings.HttpClientFactory = httpFac));
    }
    
    private string GetProxyForUrl(Url url) => ???; // whatever your rules are to pick the right one
}

这可以在全球范围内登记:

代码语言:javascript
运行
复制
FlurlHttp.Configure(settings => settings.FlurlClientFactory = new ProxyFlurlClientFactory());

或者通过迪型注射,如果你愿意的话。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73915343

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档