HttpClient。在自动发现的代理上进行身份验证的默认凭据

Ser*_*erG 6 .net c# proxy credentials dotnet-httpclient

控制狂免责声明:是的,关于 HttpClient 和代理有很多问题,但它们至少使用其中之一

  • 显式(非默认)代理凭据
  • 显式(非 WPAD)代理配置
  • 已弃用的 Api,例如 WebProxy.GetDefaultProxy、WebRequest 等。

根据dotnet 开发人员的说法

如果 HttpClientHandler.Proxy 默认值为 null,则 HttpClientHandler 将使用 IE 代理设置

因此,要使用 HttpClient 设置正确的公司代理,我们不需要任何其他操作,只需

_client = new HttpClient()
Run Code Online (Sandbox Code Playgroud)

并且没有官方方法来选择代理。但是我如何传递默认 AD 凭据以在自动发现的代理上进行身份验证呢?我刚刚收到“(407) 需要代理身份验证”。

PS 可能还有另一个问题,并且在特殊帐户下作为服务运行(尤其是在 Linux 上),此代码没有 IE 设置可供使用。所以我们需要重新实现WPAD。

Dav*_*SFT 4

您可以使用类似 HttpClient 的代码将凭据传递给默认系统代理:

var handler = new HttpClientHandler();
handler.DefaultProxyCredentials = CredentialCache.DefaultCredentials;
var client = new HttpClient(handler);
Run Code Online (Sandbox Code Playgroud)