2010-06-11 4 views
1

J'ai une application console pour télécharger un fichier à partir d'un site SharePoint. Le site SharePoint utilise l'authentification basée sur les revendications.Télécharger un fichier à partir d'un site SharePoint 2010 basé sur l'authentification basée sur les revendications

Ce code déclenche une exception 403 interdite. Les informations d'identification réseau spécifiées ont un accès complet au site et peuvent télécharger le même fichier à partir d'un navigateur.

WebClient webClient = new WebClient(); 
webClient.Credentials = new NetworkCredential(username,Password,domain); 
byte[] fileData = webClient.DownloadData(urlOfAFile); 
FileStream file = File.Create(localPath); 
file.Write(fileData, 0, fileData.Length); 

Une idée pour résoudre ce problème?

+1

Le site est-il configuré pour requérir ssl (vérifiez la sécurité du directoy dans IIS) –

+0

Oui ... Le site est configuré pour utiliser HTTPS – ashwnacharya

+0

Une chance avec ce problème? Je suis confronté à un problème similaire. –

Répondre

7

Peut-être un peu en retard, mais en ajoutant l'en-tête de demande juste avant de faire la demande résout le problème:

webClient.Headers.Add("X-FORMS_BASED_AUTH_ACCEPTED", "f"); 
+0

Salut, Merci d'avoir répondu. Après avoir ajouté votre code, je reçois une exception 401. Plus tôt, je recevais une exception 403. Est-ce que je manque quelque chose? – ashwnacharya

+0

Essayez-vous de vous connecter avec l'authentification Windows ou l'authentification par formulaire? –

+0

Authentification Windows. – ashwnacharya

0

Je rencontre aussi cette question, et au-dessous est ma recherche:

{ 
    ClientContext m_clientContext = new ClientContext(strSiteUrl); 
    m_clientContext.ExecutingWebRequest += new EventHandler<WebRequestEventArgs>(ctx_MixedAuthRequest); 
    m_clientContext.AuthenticationMode = ClientAuthenticationMode.Default; 
    m_clientContext.Credentials = new NetworkCredential(uname, pwd); 
    Web m_currentWeb = m_clientContext.Web; 
    m_clientContext.Load(m_currentWeb); 
    m_clientContext.ExecuteQuery(); 
} 

    private void ctx_MixedAuthRequest(object sender, WebRequestEventArgs e) 
    { 
     try 
     { 
      //Add the header that tells SharePoint to use Windows authentication. 
      e.WebRequestExecutor.RequestHeaders.Add(
      "X-FORMS_BASED_AUTH_ACCEPTED", "f"); 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show("Error setting authentication header: " + ex.Message); 
     } 
    } 

ici est l'article: https://msdn.microsoft.com/en-us/library/office/hh124553(v=office.14).aspx

Questions connexes