2011-03-04 80 views
24

我正在嘗試使用HttpWebRequest從SharePoint文檔庫中讀取文件。爲了做到這一點,我必須通過一些憑據。我正在使用下面的請求:如何將憑據傳遞給httpwebrequest以訪問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); 

這是傳遞憑據的正確方法嗎?

回答

6

如果您需要從桌面應用程序使用CredentialsCache.DefaultCredentials(請參閱on MSDN)作爲當前用戶運行請求。

如果您需要從服務器端代碼或不同用戶下運行請求,則您的代碼看起來很好。

請注意,你應該小心地存儲密碼 - 考慮使用SecureString版本的構造函數。

+0

非常感謝你。你能告訴我securestring轉換構造函數是什麼意思嗎? – Tortoise 2011-03-04 06:21:32

+1

http://msdn.microsoft.com/en-us/library/dd783746.aspx – 2011-03-04 17:12:15

1

如果您需要設置在運行的憑據,看看這個來源:

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

您還可以使用:

request.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials; 
相關問題