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;
デスクトップアプリケーションから現在のユーザーとしてリクエストを実行する必要がある場合は、CredentialCache.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;
}