Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# HttpClient。要在自动发现的代理上进行身份验证的默认凭据_C#_.net_Proxy_Credentials_Dotnet Httpclient - Fatal编程技术网

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

C# HttpClient。要在自动发现的代理上进行身份验证的默认凭据,c#,.net,proxy,credentials,dotnet-httpclient,C#,.net,Proxy,Credentials,Dotnet Httpclient,控制怪胎免责声明:是的,关于HttpClient和proxy有很多问题,但它们至少使用了其中一种 明确(非默认)代理凭据 显式(非WPAD)代理配置 不推荐的Api,例如。GWebProxy.GetDefaultProxy、WebRequest等 据 如果HttpClientHandler.Proxy的默认值为null,则HttpClientHandler将使用IE代理设置 因此,要使用HttpClient设置正确的公司代理,我们不需要任何额外的操作,只需 _client = new Htt

控制怪胎免责声明:是的,关于HttpClient和proxy有很多问题,但它们至少使用了其中一种

  • 明确(非默认)代理凭据
  • 显式(非WPAD)代理配置
  • 不推荐的Api,例如。GWebProxy.GetDefaultProxy、WebRequest等

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

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

_client = new HttpClient()
而且也没有正式的方式来选择代理。 但我如何传递默认的AD凭据以在自动发现的代理上进行身份验证呢? 我刚刚收到“(407)需要代理身份验证。”


另外,可能还有另一个问题,在特殊帐户下作为服务运行(特别是在Linux上),此代码没有可使用的IE设置。因此,我们需要重新实现WPAD。

您可以在HttpClient中使用如下代码将凭据传递给默认系统代理:

var handler = new HttpClientHandler();
handler.DefaultProxyCredentials = CredentialCache.DefaultCredentials;
var client = new HttpClient(handler);

获取407响应的机器的
dotnet--
版本是什么?@StevenLiekens当前我的服务编译到服务器上提供的.Net Framework 4.5。它没有dotnet实用程序。如果能得到一个惯用的答案,基本上涵盖.Net而不是特定的旧版本,那就太好了。因此,就像以前.Net 4.7
HttpClientHandler
没有
DefaultProxyCredentials
属性一样,我应该使用
WebRequest.DefaultWebProxy
来创建
WebProxy
,然后配置他的凭据?哦,我找到了!早期的4.7我们需要app.config中的
。现在很清楚了。实际上,对于4.7之前的版本,您可以这样做:WebRequest.DefaultWeb.Proxy.Credentials=CredentialCache.DefaultCredentials@David MSFT,我猜你是指WebRequest.DefaultWebProxy.Credentials。。。(WebRequest.DefaultWeb不存在。)@Serg的app.config似乎也能工作。我花了一些时间来找出正确的语法。defaultProxy节点必须嵌套在元素中。