Невозможно удалить файл на сервере по ftp из asp.net - PullRequest
1 голос
/ 19 июня 2020

Я создал приложение asp. net для поддержки изображений для сайта покупок, оно включает в себя 2 функции: одну для загрузки изображения через ftp, а другую для удаления изображения через ftp.

Я могу загружать файлы без проблем, но когда я пытаюсь удалить файл, я получаю ответ «Удаленный сервер возвратил ошибку: (530) Не авторизован».

Я использую тот же ftpuri и учетные данные, поэтому я немного запутался, почему это не работает.

Вот код для загрузки, который работает.

Раздел загрузки:

    Dim ftpRequest As FtpWebRequest = CType(WebRequest.Create(ftpuri), FtpWebRequest)

    Try
        ftpRequest.Method = WebRequestMethods.Ftp.UploadFile

        ftpRequest.Credentials = New NetworkCredential(ftpusername, ftppassword)

        Dim bytes() As Byte = System.IO.File.ReadAllBytes(filetoupload)

        ftpRequest.ContentLength = bytes.Length

        Using UploadStream As Stream = ftpRequest.GetRequestStream()
            UploadStream.Write(bytes, 0, bytes.Length)
            UploadStream.Close()
        End Using
    Catch ex As Exception

    End Try

Вот код удаления, которое завершилось ошибкой Удаленный сервер возвратил ошибку: (530) Не авторизован.

Удалить раздел:

   Dim ftpRequest As FtpWebRequest = CType(WebRequest.Create(ftpUri), FtpWebRequest)

    Try
        ftpRequest.Credentials = New NetworkCredential(ftpusername, ftppassword)

        ftpRequest.Method = WebRequestMethods.Ftp.DeleteFile

        Dim responseFileDelete As FtpWebResponse = CType(ftpRequest.GetResponse(), FtpWebResponse)

    Catch ex As Exception

    End Try

В обоих случаях значения ftpuri, ftpusername и ftppassword идентичны.

Я могу удалить файл с помощью программного обеспечения ftp с теми же учетными данными.

Любая помощь будет принята с благодарностью.

Рон

1 Ответ

0 голосов
/ 19 июня 2020

Попробуйте так:

public bool DeleteFileFromFtpServer(Uri serverUri, string ftpUsername, string ftpPassword)
{
  try
   {
    // The serverUri should look like this ftp:// scheme.
    // It contains server name along with file name that will be deleted.
    // eg: ftp://abc.com/test.txt. 

    if (serverUri.Scheme != Uri.UriSchemeFtp)
    {
        return false;
    }

    // Get the object used to communicate with the server.
    FtpWebRequest request = (FtpWebRequest)WebRequest.Create(serverUri);
    request.Credentials = new NetworkCredential(ftpUsername, ftpPassword);
    request.Method = WebRequestMethods.Ftp.DeleteFile;

    FtpWebResponse response = (FtpWebResponse)request.GetResponse();        
    response.Close();
    return true;
   }
   catch (Exception ex)
    {
      return false;
    }            
}

Звонок:

obj.DeleteFileFromFtpServer(new Uri (toDelFilename), user,pass);
...