HttpWebRequest 未使用 kerberos 对代理服务器进行身份验证

本文关键字:身份验证 代理服务器 未使用 kerberos HttpWebRequest | 更新日期: 2023-09-27 18:33:48

我使用以下代码从网页获取加载xml,但是我不断收到错误"远程服务器返回错误:(407(需要代理身份验证。

我已经查看了堆栈溢出和其他站点上的大量帖子,但无法解决问题。 我们的 IT 支持部门告诉我,这可能是因为他们强制代理服务器使用 kerberos 身份验证,但正如您所看到的,我已经将 kerberos 指定为身份验证类型。

这是我目前使用的代码:

         IWebProxy proxy = request.Proxy;
        if (proxy != null)
        {
            string proxyuri = proxy.GetProxy(request.RequestUri).ToString();
            var cc = new CredentialCache();
            cc.Add(
                new Uri(proxyuri),
                "Kerberos", //if we don't set it to "Kerberos" we get error 407 with ---> the function requested is not supported.
                CredentialCache.DefaultNetworkCredentials);

            request.UseDefaultCredentials = true;
            request.Proxy = new WebProxy(proxyuri, false);
            request.Proxy.Credentials = cc;
        }
        //set some sort of user-agent string
        request.UserAgent = "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)";
        // Create a new XmlDocument 
        var doc = new XmlDocument();
        var stream = request.GetResponse().GetResponseStream();

HttpWebRequest 未使用 kerberos 对代理服务器进行身份验证

事实证明,

我需要将相关网络的身份验证类型设置为"ntlm"而不是"kerberos",但错误的主要原因是框架的版本 2、3 和 3.5 中存在问题。(经Microsoft确认( - 将项目升级到 。NET4解决了这个问题。

相关文章: