2013-10-03 1 views
0

J'utilise le code suivant pour obtenir xml de charge à partir d'une page Web mais je continue à recevoir l'erreur « Le serveur distant a renvoyé une erreur:. (407) Authentification proxy requise »HttpWebRequest pas l'authentification par rapport au serveur proxy à l'aide kerberos

J'ai regardé un grand nombre de messages à la fois sur stackoverflow et sur d'autres sites et je suis incapable de résoudre le problème. J'ai été informé par notre service de support informatique que c'est probablement dû au fait qu'ils forcent le serveur proxy à utiliser l'authentification kerberos mais comme vous pouvez le voir, j'ai spécifié le kerberos comme type d'authentification.

Voici le code que je suis actuellement en utilisant:

  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(); 
+0

J'ai utilisé le fiddler pour analyser les en-têtes de demande et il semblerait que l'en-tête d'autorisation de proxy soit manquant ... ... –

Répondre

0

s'avère que je devais définir le type d'authentification « NTLM » plutôt que « kerberos » pour le réseau en question, mais la raison principale de la L'erreur est qu'il y a un problème dans les versions 2, 3 et 3.5 du framework. (confirmé par Microsoft) - Mettre à jour le projet .NET4 a résolu le problème .......

+0

Juste pour être clair, cela a-t-il fonctionné quand vous avez changé 'kerberos' en 'ntlm', ou avez-vous aussi dû passer à .Net 4? – StephenD

+0

Je devais définir le type d'authentification sur "ntlm" en raison de la configuration réseau, mais il y avait un problème avec les versions antérieures de .NET Framework et la mise à niveau vers la version 4 du framework .NET était nécessaire pour résoudre le problème –

Questions connexes