none
Serialization sur serveur

    Question

  • Bonjour, 

    J'ai pour but d'écrire des fichiers xml sur un serveur via ftp. J'utilise la classe ftp trouvée ici : http://www.codeproject.com/Tips/443588/Simple-Csharp-FTP-Class 

    J'ai pu adapter une méthode pour Deserializer via StreamReader

        public StreamReader streamRead(string filepath)
        {
            try
            {
                /* Create an FTP Request */
                ftpRequest = (FtpWebRequest)FtpWebRequest.Create(host + "/" + filepath);
                /* Log in to the FTP Server with the User Name and Password Provided */
                ftpRequest.Credentials = new NetworkCredential(user, pass);
                /* When in doubt, use these options */
                options();
    
                /* Specify the Type of FTP Request */
                ftpRequest.Method = WebRequestMethods.Ftp.DownloadFile;
                /* Establish Return Communication with the FTP Server */
                ftpResponse = (FtpWebResponse)ftpRequest.GetResponse();
                /* Establish Return Communication with the FTP Server */
                ftpStream = ftpResponse.GetResponseStream();
                /* Get the FTP Server's Response Stream */
                StreamReader ftpReader = new StreamReader(ftpStream);
                return ftpReader;
            }
            catch (Exception ex) { Console.WriteLine(ex.ToString()); }
            /* Return an Empty string Array if an Exception Occurs */
            return null;
        }
     

    Appelée ici :

    ftp Server = new ftp("ftp://...");
    XmlSerializer xs = new XmlSerializer(typeof(class));
    using (StreamReader sr = Server.streamRead(path))
       {
         Profil monprofil = xs.Deserialize(sr) as Profil;
         //
       }

    En revanche impossible de faire l'action inverse avec StreamWriter !

        public StreamWriter streamWrite(string filepath)
        {
            try
            {
                /* Create an FTP Request */
                ftpRequest = (FtpWebRequest)FtpWebRequest.Create(host + "/" + filepath);
                /* Log in to the FTP Server with the User Name and Password Provided */
                ftpRequest.Credentials = new NetworkCredential(user, pass);
                /* When in doubt, use these options */
                options();
    
                /* Specify the Type of FTP Request */
                ftpRequest.Method = WebRequestMethods.Ftp.UploadFile;
                /* Establish Return Communication with the FTP Server */
                ftpResponse = (FtpWebResponse)ftpRequest.GetResponse();
                /* Establish Return Communication with the FTP Server */
                ftpStream = ftpResponse.GetResponseStream();
                /* Get the FTP Server's Response Stream */
                StreamWriter ftpWriter = new StreamWriter(ftpStream);
    
                return StreamWriter;
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
            /* Return an Empty string Array if an Exception Occurs */
            return null;
        }

    "Le flux ne peut être écrit"

    Une solution ? Qu'est-ce que je loupe ?


    lundi 4 juillet 2016 20:08

Réponses

  • Bonjour Dorian.thms,

    return StreamWriter;

    Remplacez cette ligne avec return ftpWriter;
    Je vous remercie par avance de votre retour.

    Cordialement,
    Teodora


    Votez! Appel à la contribution TechNet Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.

    mardi 5 juillet 2016 13:19
    Modérateur