2011-03-04 22 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

+1

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

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; 
関連する問題