OVH Cloud OVH Cloud

Transfert de fichiers inter-serveurs

9 réponses
Avatar
Alan
Bonjour.
J'essaie de transferer un fichier du serveur A vers=20
Monserveur. J'utilise l'objet WebClient, methode Upload=20
File :
Dim uriStr As String =3D "HTTP://monserveur/XML"
Dim xWebClient As New WebClient
Dim xNomFich As String =3D "c:\aa.txt"
Dim xReponse As Byte() =3D xWebClient.UploadFile(uriStr,=20
xNomFich)

Le probl=E8me, c'est que monserveur me renvoie une erreur=20
http 405 Methode non autoris=E9e.
Vous auriez une solution SVP?
Merci d'avance

9 réponses

Avatar
Patrice
La cible ne devrait elle pas être un nom complet de fichier plutôt qu'un
répertoire comme cela semble le cas ?

Patrice

--

"Alan" a écrit dans le message de
news:214001c49a68$f1938630$
Bonjour.
J'essaie de transferer un fichier du serveur A vers
Monserveur. J'utilise l'objet WebClient, methode Upload
File :
Dim uriStr As String = "HTTP://monserveur/XML"
Dim xWebClient As New WebClient
Dim xNomFich As String = "c:aa.txt"
Dim xReponse As Byte() = xWebClient.UploadFile(uriStr,
xNomFich)

Le problème, c'est que monserveur me renvoie une erreur
http 405 Methode non autorisée.
Vous auriez une solution SVP?
Merci d'avance
Avatar
alan
Idem avec un nom complet de fichier
-----Message d'origine-----
La cible ne devrait elle pas être un nom complet de


fichier plutôt qu'un
répertoire comme cela semble le cas ?

Patrice

--

"Alan" a écrit dans le


message de
news:214001c49a68$f1938630$
Bonjour.
J'essaie de transferer un fichier du serveur A vers
Monserveur. J'utilise l'objet WebClient, methode Upload
File :
Dim uriStr As String = "HTTP://monserveur/XML"
Dim xWebClient As New WebClient
Dim xNomFich As String = "c:aa.txt"
Dim xReponse As Byte() = xWebClient.UploadFile(uriStr,
xNomFich)

Le problème, c'est que monserveur me renvoie une erreur
http 405 Methode non autorisée.
Vous auriez une solution SVP?
Merci d'avance


.



Avatar
Paul Bacelar
Il faut avoir le droit de faire une commande de POST sur la page utilisé en
URL.

Pouvez-vous nous donner une trace de la requête HTTP envoyé pour confirmer
le type de commande envoyé ainsi que le format de la requête.

Dans tous les cas, pour que IIS accepte un POST ou un PUT, il faut que la
partie extension de l'URL corresponde à un type de fichier mappé sur un
moteur de script et la solution doit avoir une partie serveur.
--
Paul Bacelar
Demandeur d'emploi


"alan" wrote in message
news:21d601c49a6e$b140cab0$
Idem avec un nom complet de fichier
-----Message d'origine-----
La cible ne devrait elle pas être un nom complet de


fichier plutôt qu'un
répertoire comme cela semble le cas ?

Patrice

--

"Alan" a écrit dans le


message de
news:214001c49a68$f1938630$
Bonjour.
J'essaie de transferer un fichier du serveur A vers
Monserveur. J'utilise l'objet WebClient, methode Upload
File :
Dim uriStr As String = "HTTP://monserveur/XML"
Dim xWebClient As New WebClient
Dim xNomFich As String = "c:aa.txt"
Dim xReponse As Byte() = xWebClient.UploadFile(uriStr,
xNomFich)

Le problème, c'est que monserveur me renvoie une erreur
http 405 Methode non autorisée.
Vous auriez une solution SVP?
Merci d'avance


.



Avatar
alan
Je pense que vous n'avez pas très bien compris.

Je dispose de deux serveurs, sur internet.
Le premier, est mon serveur 'local'. Il dispose d'un site
web, et d'une application asp.net

Le deuxieme ('monserveur'), est distant, a un site web,
mais 'sans application'. Sur ce dernier, je crée un
repértoire virtuel 'XML' dans lequel je veux stocker des
fichiers, qui seront copiés dessus a partir de mon
serveur 'local', d'ou la commande 'weblient.uploadfile'
qui est exécutée de mon serveur local
vers 'http://monserveur/xml'. Comment forcer le serveur à
accepter les commandes 'POST', là est la vraie question.
J'ai donné les autorisations écriture aux utilisateurs
ASPNET et IUSR_MONSERVEUR (le compte anonyme internet) au
repertoire XML de monserveur.
Si quelqu'un à une autre idée je suis tout ouïe...
Merci par avance
Avatar
Patrice
Dans ce cas voir le journal IIS et en particulier la méthode qui pourrait
être PUT par défaut peut-être.

Si c'est le cas, utiliser la bonne surcharge pour préciser explicitement la
méthode POST.
Sinon est-il posisble de voir si un POST fonctionne bien dans ce répertoire
en y testant par exemple un simple formulaire.

Si le serveur distant n'est pas sous ton contrôle, tu peux déjà valider dans
un premier temps avec ton serveur comme cible pour déjà voir si c'est un
problème de code ou de configuration (POST réellement interdit dans ce
répertoire ?)

Bonne continuation...

--

"alan" a écrit dans le message de
news:21d601c49a6e$b140cab0$
Idem avec un nom complet de fichier
-----Message d'origine-----
La cible ne devrait elle pas être un nom complet de


fichier plutôt qu'un
répertoire comme cela semble le cas ?

Patrice

--

"Alan" a écrit dans le


message de
news:214001c49a68$f1938630$
Bonjour.
J'essaie de transferer un fichier du serveur A vers
Monserveur. J'utilise l'objet WebClient, methode Upload
File :
Dim uriStr As String = "HTTP://monserveur/XML"
Dim xWebClient As New WebClient
Dim xNomFich As String = "c:aa.txt"
Dim xReponse As Byte() = xWebClient.UploadFile(uriStr,
xNomFich)

Le problème, c'est que monserveur me renvoie une erreur
http 405 Methode non autorisée.
Vous auriez une solution SVP?
Merci d'avance


.



Avatar
Antoine F.
Il ne s'agit pas d'une requête de type POST (soumission de formulaire) mais de
type PUT (envoi de document).

Il va falloir lire un peu de doc sur HTTP pour bien saisir les différences et surtout
les implications de ce choix.

Finalement, il faudra tenir compte des paramètres suivants:

- seulement des fichiers textes seront envoyés ou également des fichiers binaires ?
- quelle sera la taille des fichiers ? peuvent ils être envoyés en un temps inférieur
au temps de traitement de requ^te maximal autorisé ?
- le serveur d'accueil accepte-t'il la soumission de documents ? Requête PUT
autorisée ? Comment IIS ou Apache ou quoi que ce soit d'autre gère-t'il les
requêtes de type PUT ?
- le serveur a-t'il accès en écriture (voir permissions NTFS ou chmod sur Unix)
au dossier d'accueil des documents ?
- etc...

Globalement, c'est un mauvais choix de vouloir gérer une base documentaire
distante par l'intérmédiaire de requêtes PUT. Surtout pour des questions de sécurité.

Si vous souhaitez vous appuyer à 100% sur du HTTP, vous pourriez par exemple
développer un client de chaque côté, chargé d'obtenir le listing d'un dossier du
serveur (http://distant/dossier par exemple avec 'Browse directory' activé), analyser
le résultat et détecter les nouveaux fichiers puis les récupérer par des requêtes
GET si nécessaire...

.antoine
Avatar
Patrice
Je confirme que j'ai cette erreur lorsque je ne précise pas le nom de la
page. Il est sans doute plus propre de toute façon de préciser le nom de la
page.
J'en suis à une erreur 404 car je n'ai pas fait la page de réception.

Patrice

--

"alan" a écrit dans le message de
news:270401c49af7$05f26db0$
Je pense que vous n'avez pas très bien compris.

Je dispose de deux serveurs, sur internet.
Le premier, est mon serveur 'local'. Il dispose d'un site
web, et d'une application asp.net

Le deuxieme ('monserveur'), est distant, a un site web,
mais 'sans application'. Sur ce dernier, je crée un
repértoire virtuel 'XML' dans lequel je veux stocker des
fichiers, qui seront copiés dessus a partir de mon
serveur 'local', d'ou la commande 'weblient.uploadfile'
qui est exécutée de mon serveur local
vers 'http://monserveur/xml'. Comment forcer le serveur à
accepter les commandes 'POST', là est la vraie question.
J'ai donné les autorisations écriture aux utilisateurs
ASPNET et IUSR_MONSERVEUR (le compte anonyme internet) au
repertoire XML de monserveur.
Si quelqu'un à une autre idée je suis tout ouïe...
Merci par avance
Avatar
alan
Je vous remercie à tous pour ces précisions. J'ai réussi à le faire
fonctionner, il suffiser de préciser explicitement la méthode "PUT".
Et encore merci

"Patrice" a écrit :

Dans ce cas voir le journal IIS et en particulier la méthode qui pourrait
être PUT par défaut peut-être.

Si c'est le cas, utiliser la bonne surcharge pour préciser explicitement la
méthode POST.
Sinon est-il posisble de voir si un POST fonctionne bien dans ce répertoire
en y testant par exemple un simple formulaire.

Si le serveur distant n'est pas sous ton contrôle, tu peux déjà valider dans
un premier temps avec ton serveur comme cible pour déjà voir si c'est un
problème de code ou de configuration (POST réellement interdit dans ce
répertoire ?)

Bonne continuation...

--

"alan" a écrit dans le message de
news:21d601c49a6e$b140cab0$
Idem avec un nom complet de fichier
>-----Message d'origine-----
>La cible ne devrait elle pas être un nom complet de
fichier plutôt qu'un
>répertoire comme cela semble le cas ?
>
>Patrice
>
>--
>
>"Alan" a écrit dans le
message de
>news:214001c49a68$f1938630$
>Bonjour.
> J'essaie de transferer un fichier du serveur A vers
>Monserveur. J'utilise l'objet WebClient, methode Upload
>File :
> Dim uriStr As String = "HTTP://monserveur/XML"
> Dim xWebClient As New WebClient
> Dim xNomFich As String = "c:aa.txt"
> Dim xReponse As Byte() = xWebClient.UploadFile(uriStr,
>xNomFich)
>
>Le problème, c'est que monserveur me renvoie une erreur
>http 405 Methode non autorisée.
> Vous auriez une solution SVP?
>Merci d'avance
>
>
>.
>





Avatar
Patrice
Ok mais comme disait Antoine cela pose un problème de sécurité.

Pour clarifier il y a deux méthodes :

- PUT permet d'écrire un fichier directement sur le serveur Web (cela
nécessite que l'utilisateur connecté puisse écrire ce serveur ce qui lui
permet de faire un peu n'importe quoi par exemple en se connectant avec les
"dossiers Web" IE).

- POST permet de poster le contenu du fichier. Ce contenu est transmis à une
page de destination qui peut alors sauver ce fichier (y compris en dehors du
site web) et éventuellement faire tout contrôle nécessaire.

A la relecture je pense que le problème original était lié au fait que tu
postais vers le fichier tels que tu pensais le sauver sur le serveur et non
pas part une page de traitement qui récupère et sauve ce fichier.

Vériie bien les avantages/inconvénients de ces deux méthodes...

Patrice

--

"alan" a écrit dans le message de
news:
Je vous remercie à tous pour ces précisions. J'ai réussi à le faire
fonctionner, il suffiser de préciser explicitement la méthode "PUT".
Et encore merci

"Patrice" a écrit :

> Dans ce cas voir le journal IIS et en particulier la méthode qui


pourrait
> être PUT par défaut peut-être.
>
> Si c'est le cas, utiliser la bonne surcharge pour préciser explicitement


la
> méthode POST.
> Sinon est-il posisble de voir si un POST fonctionne bien dans ce


répertoire
> en y testant par exemple un simple formulaire.
>
> Si le serveur distant n'est pas sous ton contrôle, tu peux déjà valider


dans
> un premier temps avec ton serveur comme cible pour déjà voir si c'est un
> problème de code ou de configuration (POST réellement interdit dans ce
> répertoire ?)
>
> Bonne continuation...
>
> --
>
> "alan" a écrit dans le message de
> news:21d601c49a6e$b140cab0$
> Idem avec un nom complet de fichier
> >-----Message d'origine-----
> >La cible ne devrait elle pas être un nom complet de
> fichier plutôt qu'un
> >répertoire comme cela semble le cas ?
> >
> >Patrice
> >
> >--
> >
> >"Alan" a écrit dans le
> message de
> >news:214001c49a68$f1938630$
> >Bonjour.
> > J'essaie de transferer un fichier du serveur A vers
> >Monserveur. J'utilise l'objet WebClient, methode Upload
> >File :
> > Dim uriStr As String = "HTTP://monserveur/XML"
> > Dim xWebClient As New WebClient
> > Dim xNomFich As String = "c:aa.txt"
> > Dim xReponse As Byte() = xWebClient.UploadFile(uriStr,
> >xNomFich)
> >
> >Le problème, c'est que monserveur me renvoie une erreur
> >http 405 Methode non autorisée.
> > Vous auriez une solution SVP?
> >Merci d'avance
> >
> >
> >.
> >
>
>
>