Я хочу загрузить файл из локального каталога в библиотеку документов Share Point с помощью SSIS. Для этого я использую задачу «Сценарий». При запуске пакета я получаю ошибку ниже:

Удаленный сервер возвратил ошибку: (403) Запрещено.

Код задачи сценария выглядит следующим образом:

public void Main()
        {
            // TODO: Add your code here
            WebClient myWebClient;
            string DestinationURL;
            string LocalFileName;
            bool FireAgain = true;
            try
            {
                myWebClient = new WebClient();
                myWebClient.Headers.Add("user-agent", "Only a test!");
                LocalFileName = @"C:\Users\jay.desai\Desktop\LSRSQL01_ACXM_20201003.html";
                DestinationURL = @"https://companyname.sharepoint.com/sites/DataServices/Shared%20Documents/Data%20Dictionaries/LSRSQL01_ACXM_20201003.html";
                Console.WriteLine(LocalFileName);
                myWebClient.Credentials = new NetworkCredential("jay.desai@companyname.com", "HelloWorld@2891", "NATSYS");
                myWebClient.Proxy.Credentials = CredentialCache.DefaultNetworkCredentials;
                //myWebClient.UseDefaultCredentials = true;
                Dts.Events.FireInformation(0, String.Empty, String.Format("Uploading {0} to {1}", LocalFileName, DestinationURL), String.Empty, 0, ref FireAgain);
                // upload the file
                myWebClient.UploadFile(DestinationURL, "PUT", LocalFileName);
            }
            catch (Exception ex)
            {
                // Catch and handle error
                Dts.Events.FireError(0, String.Empty, ex.Message, String.Empty, 0);
            }

            Dts.TaskResult = (int)ScriptResults.Success;
        }

Я могу открыть ту же папку и загрузить файл с помощью браузера.

3
Jay Desai 8 Окт 2020 в 01:27

1 ответ

Лучший ответ

Это было решено с помощью CSOM. Для этого сначала необходимо установить SDK клиентских компонентов SharePoint Online. Затем в проекте вы должны указать Microsoft.SharePoint.Client и Microsoft.SharePoint.Client.Runtime. Ссылка Microsoft: здесь

Используйте приведенный ниже код в задаче сценария:

public void Main()
        {
            // TODO: Add your code here
            ClientContext clientContext = new ClientContext("https://companyname.sharepoint.com");

            SecureString passWord = new SecureString();
            foreach (char c in "HelloWorld@1234".ToCharArray()) passWord.AppendChar(c);
            clientContext.Credentials = new SharePointOnlineCredentials("jay.desai@company.com", passWord);

            using(FileStream fileStream = new FileStream(@"C:\Users\jay.desai\Desktop\LSRSQL01_ACXM_20201003.html", FileMode.Open))
            ClientOM.File.SaveBinaryDirect(clientContext, "/sites/DataServices/Shared Documents/Data Dictionaries/LSRSQL01_ACXM_20201003.html", fileStream, true);

            Dts.TaskResult = (int)ScriptResults.Success;
         }
0
Jay Desai 9 Окт 2020 в 15:48