如何将凭据传递给httpwebrequest以访问SharePoint库

Tor*_*ise 29 c# asp.net sharepoint httpwebrequest

我正在尝试使用SharePoint文档库中的文件HttpWebRequest.为了做到这一点,我必须传递一些凭据.我正在使用以下请求:

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);
Run Code Online (Sandbox Code Playgroud)

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

小智 22

你也可以使用:

request.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials; 
Run Code Online (Sandbox Code Playgroud)


Ale*_*kov 6

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

如果您需要从服务器端代码或其他用户下运行请求,则代码看起来很好.

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


dje*_*eeg 5

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

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;
}
Run Code Online (Sandbox Code Playgroud)