удалить файл Sharepoint, используя задачу скрипта - PullRequest
0 голосов
/ 09 февраля 2019

Мне нужно удалить файл Sharepoint с помощью задачи «Сценарий» из служб SSIS.В Visual Basic я пытался использовать SPListItemCollection с импортом Microsoft.Sharepoint, но он не распознает пространство имен.Я не нашел много тем на эту тему, или то, что я нашел, не было связано с задачей скрипта, поэтому любая помощь будет очень признательна.Большое спасибо

Обновление на основе ответа @Hadi

Спасибо Хади за ваш ответ.Я отказался от идеи использования SPListCollection, поскольку она кажется слишком сложной.Вместо этого я пытаюсь удалить файл после его загрузки из Sharepoint в локальную папку.Мне нужна помощь в строке, которая на самом деле удаляет файл.Вот код:

Public Sub Main()
    Try

        ' get location of local folder 

        Dim dir As DirectoryInfo = New DirectoryInfo(Dts.Variables("DestP").Value.ToString())



        If dir.Exists Then
            ' Create the filename for local storage

            Dim file As FileInfo = New FileInfo(dir.FullName & "\" & Dts.Variables("FileName").Value.ToString())


            If Not file.Exists Then

                ' get the path of the file to download 

                Dim fileUrl As String = Dts.Variables("SHP_URL").Value.ToString()




                If fileUrl.Length <> 0 Then 

                    Dim client As New WebClient()



                    If Left(fileUrl, 4).ToLower() = "http" Then

                        'download the file from SharePoint 

                        client.Credentials = New System.Net.NetworkCredential(Dts.Variables("$Project::UserN").Value.ToString(), Dts.Variables("$Project::Passw").Value.ToString())

                        client.DownloadFile(fileUrl.ToString() & "/" & Dts.Variables("FileName").Value.ToString(), file.FullName)


                    Else
                        System.IO.File.Copy(fileUrl.ToString() & Dts.Variables("FileName").Value.ToString(), file.FullName)

                    End If
'delete file from Sharepoint

                    client.(fileUrl.ToString() & "/" & Dts.Variables("FileName").Value.ToString(), file.FullName).delete()

                Else

                    Throw New ApplicationException("EncodedAbsUrl variable does not contain a value!")

                End If

            End If

        Else

            Throw New ApplicationException("No ImportFolder!")

        End If

    Catch ex As Exception



        Dts.Events.FireError(0, String.Empty, ex.Message, String.Empty, 0)



        Dts.TaskResult = ScriptResults.Failure


    End Try

    Dts.TaskResult = ScriptResults.Success
End Sub

Ответы [ 2 ]

0 голосов
/ 12 февраля 2019

Спасибо @ Хади за вашу помощь.Для меня это не работает с FTPWebResponse.Работало с HttpWebRequest.Вот сценарий:

Dim request As System.Net.HttpWebRequest = CType(WebRequest.Create(fileUrl.ToString() & "/" & Dts.Variables("FileName").Value.ToString()), HttpWebRequest)

request.Credentials = New System.Net.NetworkCredential(Dts.Variables("$Project::UserN").Value.ToString(), Dts.Variables("$Project::Passw").Value.ToString())

request.Method = "DELETE"

Dim response As System.Net.HttpWebResponse = CType(request.GetResponse(), HttpWebResponse)
0 голосов
/ 10 февраля 2019

Обновление 1 - удаление с помощью FtpWebRequest

Вы не можете удалить файл с использованием класса WebClient.Вы можете сделать это используя класс FtpWebRequest.И отправьте запрос WebRequestMethods.Ftp.DeleteFile, как указано в ссылке ниже:

Это должноРаботайте также с Sharepoint.

Вот функция в VB.NET

Private Function DeleteFile(ByVal fileName As String) As String
    Dim request As FtpWebRequest = CType(WebRequest.Create(fileUrl.ToString() & "/" & fileName), FtpWebRequest)
    request.Method = WebRequestMethods.Ftp.DeleteFile
    request.Credentials = New NetworkCredential(Dts.Variables("$Project::UserN").Value.ToString(), Dts.Variables("$Project::Passw").Value.ToString())

    Using response As FtpWebResponse = CType(request.GetResponse(), FtpWebResponse)
        Return response.StatusDescription
    End Using
End Function

Вам следует заменить следующую строку:

client.(fileUrl.ToString() & "/" & Dts.Variables("FileName").Value.ToString(), file.FullName).delete()

С

DeleteFile(Dts.Variables("FileName").Value.ToString())

Также вы можете использовать следующие учетные данные:

request.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials;

Ссылки


Начальный ответ

Я некоторое время искал похожую проблему, похоже, вы не можете удалить файл Sharepoint в SSIS с помощью File System Task или Execute Process Task, илиТолько способ использует Script Task.В Интернете есть много ссылок, описывающих этот процесс, таких как:

Что касается упомянутой вами проблемы, я думаю, вам следует убедиться, что Microsoft.Sharepoint.dll добавлено в качестве ссылки в задаче сценария.Если это так, попробуйте использовать Microsoft.Sharepoint.SPListItemCollection вместо SPListItemCollection.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...