none
FTPWebRequest et Windows Azure RRS feed

  • Question

  • Bonjour à tous,

    j'ai un service Wcf hébergé sur Windows Azure qui renomme des fichiers sur un serveur Ftp en utilisant FtpWebRequest.

    Ce service est appelé plusieures fois de suite (jusqu'à 600-700 fois) et fonctionnait très bien en production jusqu'à hier, après avoir fais une mise à jour de ma biblithèque de service.

    Ma mise à jour d'hier n'a strictement rien à voir avec le service en question.

    Le problème est le suivant :

    • Les 4 premiers appel du service fonctionne et déplace bien mes fichiers sur le Ftp.
    • Au 5ème appel du service, j'obtiens l'erreur suivante : "Unable to connect to the remote server"

    Avant ma mise à jour, j'avais pris soin de conserver mon ancienne version en Staging.

    J'ai donc fais plusieurs essais.

    • En hébergeant la bibliothèque de service en local, tout fonctionne (première chose qui me fais penser à une modification dans windows Azure assez récente)
    • En rebasculant sur l'ancienne version de ma bibliothèque de service en Swapant, tout fonctionne.
    • En republiant l'ancienne version sur Azure (celle qui fonctionne quand je la bascule du Staging vers la prod) directement en prod (pour garder en Staging la même version en mode "qui marche"), l'erreur se reproduit à nouveau à la 5ème connection au serveur FTP (deuxième chose qui me fais penser à une modification de Windows Azure).

    J'en arrive donc au constat suivant : ce serait à la publication que quelque chose change puisqu'une même version publié il y a quelque semaines fonctionne alors qu'elle ne fonctionne pas en la republiant aujourd'hui.

    J'ai vérifié mes paramètres de publications et, sauf erreur de ma part, ce sont les mêmes.

    Voici la méthode qui déplace les fichiers :

    Public Function deplace_image(ByVal CheminFichier As String, ByVal NomfichierOriginal As String, ByVal NomFichierFinal As String, ByVal serveur_ftp As String, ByVal login_ftp As String, ByVal pass_ftp As String) As retour_standard Dim lcret As New retour_standard Dim FTP As FtpWebRequest Dim Reply As FtpWebResponse serveur_ftp = "ftp://" + serveur_ftp Try If Left(CheminFichier, 1) <> "/" And Left(CheminFichier, 1) <> "\" Then CheminFichier = "/" & CheminFichier CheminFichier = Replace(CheminFichier, "\", "/") If Right(CheminFichier, 1) <> "/" And Left(CheminFichier, 1) <> "\" Then CheminFichier = CheminFichier & "/" FTP = DirectCast(FtpWebRequest.Create(serveur_ftp + CheminFichier + NomfichierOriginal), FtpWebRequest) 'info de connexion FTP.Credentials = New NetworkCredential(login_ftp, pass_ftp) 'Ferme la connexion apres le transfert FTP.KeepAlive = False 'On veut un transfer binaire et pas textuel FTP.UseBinary = True 'On défini la method. FTP.Method = WebRequestMethods.Ftp.Rename 'On renomme FTP.RenameTo = NomFichierFinal 'on récupère la reponse du serveur'

    'c'est la que ça plante au 5ème déplacement

    Reply = DirectCast(FTP.GetResponse(), FtpWebResponse) Reply.Close() Reply = Nothing FTP = Nothing lcret.Ok = True Catch e As Exception lcret.Ok = False lcret.message_erreur = e.ToString End Try Return lcret End Function

    Si quelqu'un à une piste, je suis preneur.

    D'avance merci à tous pour vos suggestions.


    • Modifié bobertin mercredi 12 septembre 2012 12:42
    mercredi 12 septembre 2012 12:40

Réponses

  • A priori non, bien qu'en fait je n'en sache rien car je laisse le choix de l'os en automatique...

    J'ai finalement changé mon fusil d'épaule et fais les déplacement de fichier directement depuis l'appli on-premise avant d'appeler le web service qui fais les autres traitements.

    Merci quand même.

    • Marqué comme réponse bobertin mardi 18 septembre 2012 15:28
    mardi 18 septembre 2012 15:28

Toutes les réponses

  • Y'a eu un changement de version de l'OS sous Azure ?

    Richard Clark
    Consultant - Formateur .NET
    http://www.c2i.fr
    Depuis 1996: le 1er site .NET francophone

    vendredi 14 septembre 2012 05:42
  • A priori non, bien qu'en fait je n'en sache rien car je laisse le choix de l'os en automatique...

    J'ai finalement changé mon fusil d'épaule et fais les déplacement de fichier directement depuis l'appli on-premise avant d'appeler le web service qui fais les autres traitements.

    Merci quand même.

    • Marqué comme réponse bobertin mardi 18 septembre 2012 15:28
    mardi 18 septembre 2012 15:28