如何将凭据传递给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); 

这是传递凭据的正确方法吗?

你也可以使用:

 request.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials; 

如果您需要以桌面应用程序中的当前用户身份运行请求,请使用CredentialsCache.DefaultCredentials (请参阅MSDN )。

如果您需要从服务器端代码或不同用户下运行请求,您的代码看起来很好。

请注意,您应该小心存储密码 – 考虑使用构造函数的SecureString版本。

如果您需要动态设置凭据,请查看此来源:

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; }