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

时间:2013-10-03 11:42:49

标签: c# httpwebrequest kerberos webproxy http-status-code-407

我使用以下代码从网页上获取加载xml但是我一直收到错误“远程服务器返回错误:(407)需要代理验证。

我查看了stackoverflow和其他网站上的大量帖子,但无法解决问题。我的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();

1 个答案:

答案 0 :(得分:0)

结果我需要将身份验证类型设置为" ntlm"而不是" kerberos"对于有问题的网络但错误的主要原因是框架的版本2,3和3.5存在问题。 (由Microsoft确认) - 将项目升级到.NET4解决了问题.......