Upload HTTPS c#

Résolu/Fermé
melar - 21 déc. 2007 à 12:28
patou6377 Messages postés 2 Date d'inscription mercredi 17 juin 2009 Statut Membre Dernière intervention 17 juin 2009 - 17 juin 2009 à 16:39
Bonjour,
je fais un programme me permettant d'uploader un fichier txt sur un serveur HTTPS, voici mon code:
private void button1_Click(object sender, EventArgs e)
{
ServicePointManager.ServerCertificateValidationCallback += delegate { return true; };

string fichiersource = @"c:\fichier\tata.txt";
Uri fichierdestination = new Uri("https://192.168.1.15/WebSite/toto.txt");

WebClient request = new WebClient();

//parametre de connexion
request.Credentials = new NetworkCredential("Admministrateur", "***l");

request.UploadFile(fichierdestination, fichiersource);
}

La génération se passe bien mais lorsque je lance le programme, me vient l'exception "le serveur distant a retourné une erreur : (405) Méthode non autorisée".

Pourtant lorsque j'essaie de faire l'inverse (cad télécharger du serveur HTTPS au local, tout se passe bien.
Je comprends vraiment pas, quelqu'un aurait une idée ?

12 réponses

phil232 Messages postés 607 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 31 janvier 2008 178
21 déc. 2007 à 13:23
permissions sur le serveur ? par défaut on ne peut pas écrire sur le serveur
0
kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
21 déc. 2007 à 13:29
Bonjour,

Ce n'est pas les permissions du serveur qui sont en cause, mais simplement que pour faire de l'upload, il faut que ton serveur soit configuré en serveur FTP. Un serveur HTTP (secure ou non) permet effectivement de faire un site, mais pour ce qui est de l'upload tu dois aussi avoir un serveur FTP (qui peut etre le même que ton serveur HTTP).
Du moins c'est ce dont je me souviens de mes cours d'administration d'il y a quelques années.
0
Effectivement, ce n'est pas un problème de permission étant donné que je peux download des données.
Donc si j'ai bien compris, il m'est impossible d'uploader des données sur un serveur HTTPS ?
Donc mon programme est impossible à réaliser ?
0
kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
21 déc. 2007 à 14:01
Si ton serveur ne propose pas la fonction d'upload (donc n'est pas configurer pour faire entre autre du FTP), je dirais que non tu ne peux pas.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Ok, merci.
Par contre, je ne trouve pas la balise "résolu"
0
phil232 Messages postés 607 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 31 janvier 2008 178
21 déc. 2007 à 16:57
c'est un radio button en-dessous des boutons "Ajouter", etc.
0
melar Messages postés 76 Date d'inscription jeudi 22 juin 2006 Statut Membre Dernière intervention 23 novembre 2008 27
26 déc. 2007 à 09:12
Il n'y a pas de solution, le code est impossible.
Merci.
0
Salut,
Bien que je ne développe pas en C# mais en C, je ne vois pas d'impossibilité à uploader un fichier vers un site HTTP/HTTPS car il s'agit d'un POST au format binaire ce qui est tout à fait classique.

En ASP et en ligne de commande ça donnerai ça:

la page ASP:
<%@ LANGUAGE="VBSCRIPT" %>
<HTML>
<HEAD>
<TITLE>Upload File Results</TITLE>
</HEAD>
<BODY>
<BR>
Thank you for uploading your file.<br>
<% Set upl = Server.CreateObject("SoftArtisans.FileUp") %>
<% upl.Path = "C:\temp" %>
<% upl.SaveAs "C:\uploads\upload.out" %>
Total Bytes Written: <%=upl.TotalBytes%>
</BODY>
</HTML>


la ligne de commande:
curl -F f1=@c:\command.com http://localhost/formpost.asp</code>



Je pense que dans ton cas il s'agit d'une mauvaise configuration du IIS.
J'ai écris quelques lignes à ce sujet sur mon wiki http://www.grandville.net/pmwiki.php/CUrl/PosterUnFichierVersIIS
0
phil232 Messages postés 607 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 31 janvier 2008 178
7 janv. 2008 à 15:31
il est encore plus classique de ne pas permettre les upload vers un serveur. moi, p.ex. je n'aimes pas les pub dans la boite aux lettres et si je les refuse elles ne sont pas lues. même chose pour des fichiers qui doivent arriver sur un serveur où personne t'a donné la permission de ce faire.
0
Bonjour,

Il est tout à fait possible d'uploader un (ou plusieurs) fichier(s) avec le protocole HTTP, lorsqu'on ne dispose pas d'un serveur FTP ou lorsqu'on ne peut (ou ne veut) pas utiliser le protocole FTP. C'est de cette façon que procèdent bon nombre de sites spécialisés dans l'hébergement d'images par exemple : un formulaire permet de sélectionner le fichier sur son disque dur, celui-ci étant ensuite transféré sur le serveur par une requête HTTP POST. Je ne vois pas pourquoi cela ne fonctionnerait pas en HTTPS. Bien sûr, il est nécessaire d'avoir un script sur le serveur qui gère la réception et l'enregistrement des données.

Il faut donc reproduire le comportement du formulaire web dans le programme C# (ou autre) :

1) encoder les données (variables, fichiers) au format multipart/form-data (la RFC 1867 détaille cet encodage : http://www.faqs.org/rfcs/rfc1867.html ;

2) transmettre une requête POST au serveur, en appelant le script qui gère l'upload (chercher "upload.php" dans Google pour des exemples de scripts PHP).
0
melar Messages postés 76 Date d'inscription jeudi 22 juin 2006 Statut Membre Dernière intervention 23 novembre 2008 27
17 janv. 2008 à 14:22
Je cherche toujours la solution en c#. Si quelqu'un a une idée...
0
melar Messages postés 76 Date d'inscription jeudi 22 juin 2006 Statut Membre Dernière intervention 23 novembre 2008 27
17 janv. 2008 à 16:06
Finalement, il peut peut-être s'agir d'un problème de permission, d'où le message: "le serveur distant a retourné une erreur : (405) Méthode non autorisée".
J'ai mis mon certificat sous IIS 5.1
Par contre,j'ai beau bidouiller, je ne trouve pas comment rendre la méthode autorisable.
0
melar Messages postés 76 Date d'inscription jeudi 22 juin 2006 Statut Membre Dernière intervention 23 novembre 2008 27
18 janv. 2008 à 12:09
Résolu, il suffisait d'utiliser la méthode "PUT" pour que ça fonctionne.
Et donc changer la ligne: request.UploadFile(fichierdestination, fichiersource);
Par: request.UploadFile(fichierdestination,"PUT",fichiersource);

Merci d'avoir essayé de m'aider.
0
patou6377 Messages postés 2 Date d'inscription mercredi 17 juin 2009 Statut Membre Dernière intervention 17 juin 2009
17 juin 2009 à 16:39
Bonjour,

je suis débutant et dois réaliser le même genre de projet. Pourrais-tu m'envoyer ton code stp pour m'aider ?

merci beaucoup
0