2

を使用してOffice365SharePointライブラリに存在するアイテムをダウンロードしようとしていますが、次のWebcClient.DownloadFile()例外が発生します。

例外 :

The remote server returned an error: (403) Forbidden.

サンプルコード:

NetworkCredential credential = new NetworkCredential("username", "password", "aaa.onmicrosoft.com");
WebClient webClient = new WebClient();
webClient.Credentials = credential;
webClient.DownloadFile(@"https://aaa.sharepoint.com/testDoc/test.pdf", @"c:/test.pdf");
4

3 に答える 3

6

もう1つのオプションは、SharePoint Online ClientComponentsSDKのSharePointOnlineCredentialsクラスを利用する ことです

SharePointOnlineCredentialsクラスは、SharePointOnlineリソースにアクセスするための資格情報を提供するオブジェクトを表します

前提条件

SharePointOnlineクライアントコンポーネントSDK

SharePointOnlineからファイルをダウンロードする方法

 public static void DownloadFile(string userName, string password, string fileUrl, string filePath)
 {
        var securePassword = new SecureString();
        foreach (var c in password)
        {
            securePassword.AppendChar(c);
        }
        using (var client = new WebClient())
        {
            client.Credentials = new SharePointOnlineCredentials(userName, securePassword);
            client.Headers.Add("X-FORMS_BASED_AUTH_ACCEPTED", "f");
            client.DownloadFile(fileUrl, filePath);
        }
}
于 2014-08-28T11:17:12.453 に答える
2

問題を取り除くには、HeadersとUserAgentと呼ばれる少し追加する必要があります。

 public static void method()
        {
         //   NetworkCredential myCredentials = new NetworkCredential("username", "password", "aaa.onmicrosoft.com");
            WebClient w = new WebClient();
            var ua = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)";
            w.Headers["Accept"] = "/";
            w.Headers.Add(HttpRequestHeader.UserAgent, ua);
            w.Credentials = myCredentials;
          w.DownloadFile(url, @"c:/name.doc"); 
        }

Office 365のチームサイトライブラリからファイルをダウンロードします。ただし、ダウンロードしたファイルが提供されます。私が残した唯一の問題:ファイルには、ダウンロードしたい実際の情報が含まれていません。私はこの問題を数日間解決しようとしています-そしてこれは私が今までに得た最高の結果です。たぶん、あなたはこの新しい情報でそれについて私を助けることができます。私に教えてください :)

于 2012-10-03T07:43:32.567 に答える
2

友達の助けを借りて、このSharePointオンライン認証をなんとかクラックできました:)

ウィクター・ウィランからのこのブログ投稿の方向性を親切に指摘されました。

そして、Wictorsを使用する私のWebClient呼び出しは、ライブラリコードを要求します...

var claimsHelper = new MsOnlineClaimsHelper(sharepointOnlineUrl, username, password);

var client = new WebClient();
client.Headers[ "Accept" ] = "/";
client.Headers.Add(HttpRequestHeader.UserAgent, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)");
client.Headers.Add(HttpRequestHeader.Cookie, claimsHelper.CookieContainer.GetCookieHeader(new Uri(sharepointOnlineUrl))  );

var document = client.DownloadString( documentUrl );
于 2012-10-31T12:52:34.623 に答える