2011-03-04 5 views
24

Próbuję odczytać pliki z biblioteki dokumentów programu SharePoint przy użyciu HttpWebRequest. W tym celu muszę przekazać kilka referencji. Używam poniższego żądania:Jak przekazywać poświadczenia do httpwebrequest w celu uzyskania dostępu do biblioteki SharePoint

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); 
request.Method = "GET"; 
request.ContentType = "application/msexcel"; 
request.UserAgent = "Mozilla/4.0+(compatible;+MSIE+5.01;+Windows+NT+5.0"; 
request.Credentials = new NetworkCredential(UserName, PassWord); 

Czy to jest właściwy sposób przekazywania referencji?

Odpowiedz

6

Jeśli musisz uruchomić żądanie jako bieżący użytkownik z aplikacji komputerowej, użyj CredentialsCache.DefaultCredentials (patrz on MSDN).

Twój kod wygląda dobrze, jeśli potrzebujesz uruchomić żądanie po stronie serwera lub pod innym użytkownikiem.

Należy pamiętać, że należy zachować ostrożność podczas przechowywania haseł - należy rozważyć użycie wersji konstruktora SecureString.

+0

Dziękuję bardzo. Czy możesz mi powiedzieć, co rozumie się przez konstruktor konwersji securestring. – Tortoise

+1

http://msdn.microsoft.com/en-us/library/dd783746.aspx –

1

Jeśli trzeba ustawić poświadczenia w locie, rzucić okiem na to źródło:

http://spc3.codeplex.com/SourceControl/changeset/view/57957#1015709

private ICredentials BuildCredentials(string siteurl, string username, string password, string authtype) { 
    NetworkCredential cred; 
    if (username.Contains(@"\")) { 
     string domain = username.Substring(0, username.IndexOf(@"\")); 
     username = username.Substring(username.IndexOf(@"\") + 1); 
     cred = new System.Net.NetworkCredential(username, password, domain); 
    } else { 
     cred = new System.Net.NetworkCredential(username, password); 
    } 
    CredentialCache cache = new CredentialCache(); 
    if (authtype.Contains(":")) { 
     authtype = authtype.Substring(authtype.IndexOf(":") + 1); //remove the TMG: prefix 
    } 
    cache.Add(new Uri(siteurl), authtype, cred); 
    return cache; 
} 
20

Można także użyć:

request.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials; 
Powiązane problemy