none
Erreur 553 transfert de fichier RRS feed

  • Question

  • Imports System
    Imports System.IO
    Imports System.Net
    Imports System.Text
    
    Module Module1
        Public Sub Main()
            Dim request As FtpWebRequest = CType(WebRequest.Create("ftp://00.000.00.00/httpdocs/Cloud"), FtpWebRequest)
            request.Method = WebRequestMethods.Ftp.UploadFile
            request.Credentials = New NetworkCredential("...", "...")
            System.Net.ServicePointManager.SecurityProtocol = Net.SecurityProtocolType.Tls12
            Dim fileContents As Byte()
    
            If IO.File.Exists(Application.StartupPath & "\testfile.txt") = False Then
                MsgBox("Erreur")
            End If
            Using sourceStream As StreamReader = New StreamReader(Application.StartupPath & "\testfile.txt")
                fileContents = Encoding.UTF8.GetBytes(sourceStream.ReadToEnd())
            End Using
    
            request.ContentLength = fileContents.Length
    
            Using requestStream As Stream = request.GetRequestStream()'Erreur 553
                requestStream.Write(fileContents, 0, fileContents.Length)
            End Using
    
            Using response As FtpWebResponse = CType(request.GetResponse(), FtpWebResponse)
                Console.WriteLine($"Upload File Complete, status {response.StatusDescription}")
            End Using
        End Sub
    End Module
    

    Salut ! Le problème est que l'ai l'erreur 553 (Nom de fichier non autorisé)

    J'ai ajouté la ligne car je pensais que cela venait de la sécurité.

    System.Net.ServicePointManager.SecurityProtocol = Net.SecurityProtocolType.Tls12

    Je ne comprends pas. Voici le détail. Merci

    System.Net.WebException
      HResult=0x80131509
      Message=Le serveur distant a retourné une erreur : (553) Nom de fichier non autorisé.
      Source=System
      Arborescence des appels de procédure :
       à System.Net.FtpWebRequest.SyncRequestCallback(Object obj)
       à System.Net.FtpWebRequest.RequestCallback(Object obj)
       à System.Net.CommandStream.Dispose(Boolean disposing)
       à System.IO.Stream.Close()
       à System.IO.Stream.Dispose()
       à System.Net.ConnectionPool.Destroy(PooledStream pooledStream)
       à System.Net.ConnectionPool.PutConnection(PooledStream pooledStream, Object owningObject, Int32 creationTimeout, Boolean canReuse)
       à System.Net.FtpWebRequest.FinishRequestStage(RequestStage stage)
       à System.Net.FtpWebRequest.GetRequestStream()
       à Registry.Module1.Main() dans D:\Travail\Projets\Nouveau\Registry\Registry\Module1.vb :ligne 23
       à Registry.Form1.Button1_Click(Object sender, EventArgs e) dans D:\Travail\Projets\Nouveau\Registry\Registry\Form1.vb :ligne 3
       à System.Windows.Forms.Control.OnClick(EventArgs e)
       à System.Windows.Forms.Button.OnClick(EventArgs e)
       à System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
       à System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
       à System.Windows.Forms.Control.WndProc(Message& m)
       à System.Windows.Forms.ButtonBase.WndProc(Message& m)
       à System.Windows.Forms.Button.WndProc(Message& m)
       à System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
       à System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
       à System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
       à System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
       à System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
       à System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
       à System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
       à Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.OnRun()
       à Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.DoApplicationModel()
       à Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.Run(String[] commandLine)
       à Registry.My.MyApplication.Main(String[] Args) dans  :ligne 81

    lundi 18 novembre 2019 01:55

Réponses

  • Salut ! Merci. En fait, j'ai changé de technique et ça marche mieux :

    Dim fichlocal = Application.StartupPath & "\testfile.txt" Dim fichftp = "ftp://00.000.0.00/httpdocs/cloud/testfile.txt"

    Dim Erreur as Boolean Try My.Computer.Network.UploadFile(fichlocal, fichftp, "login", "motdepasse") Catch ex As Exception Erreur = True MsgBox(ex.Message) End Try If Erreur = False Then MsgBox("Fichier transféré.") End If


    lundi 25 novembre 2019 05:06

Toutes les réponses

  • Le problème vient souvent framework 4.7 qui ne support pas protocole tls1.1 et tls1.2 . il faut desativer tls 1.3 car j'ai déjà eu le mème problème.

    voici un petit resumer : https://www.kapilarya.com/how-to-configure-tls-settings-in-windows-10

    desativer TLS v1.3

    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.3\Client]
    “DisabledByDefault”=dword:00000000
    “Enabled”=dword:00000000

    Ativer TLS v1.3

    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.3\Client]

    “DisabledByDefault”=dword:00000000

    “Enabled”=dword:00000001

    cordialement,



    • Modifié zorro591 lundi 18 novembre 2019 13:28
    lundi 18 novembre 2019 13:22
  • Salut ! Merci. En fait, j'ai changé de technique et ça marche mieux :

    Dim fichlocal = Application.StartupPath & "\testfile.txt" Dim fichftp = "ftp://00.000.0.00/httpdocs/cloud/testfile.txt"

    Dim Erreur as Boolean Try My.Computer.Network.UploadFile(fichlocal, fichftp, "login", "motdepasse") Catch ex As Exception Erreur = True MsgBox(ex.Message) End Try If Erreur = False Then MsgBox("Fichier transféré.") End If


    lundi 25 novembre 2019 05:06