web-dev-qa-db-fra.com

Configurer la méthode Apache HTTP 2.2 for PUT

J'ai écrit du code pour le téléchargement et le téléchargement de fichiers à l'aide de HttpWebRequest/HttpWebResponse classe en C # avec Apache 2.2 en tant que serveur Web. Dans le code, j'utilise request.method = "PUT".

Je veux configurer mon fichier de configuration HTTP pour prendre en charge la méthode PUT. J'écris le script de méthode PUT comme:

<Location "C:/Program Files/Apache Software Foundation/Apache2.2/htdocs/output">
<Dav On
<LimitExcept GET HEAD OPTIONS PUT>
Allow from all
</LimitExcept>
</Location>

Ça ne marche pas. Il affiche une erreur à la sortie du programme: (405) La méthode n'est pas autorisée.

4
soundar
  1. Votre directive <Dav On n'est pas complète (inutile de <) - je suppose que c'est simplement un problème de copier-coller.

  2. Plus important encore - vous utilisez la directive <Location>, mais en fournissant un chemin physique sur votre système de fichiers/disque dur.

    C'est faux - <Location> est utilisé pour faire correspondre les URL, pas les répertoires ; pour correspondre aux répertoires, vous devez utiliser <Directory>. Veuillez vous reporter au manuel Apache: http://httpd.Apache.org/docs/current/mod/core.html#location

    Vous aurez probablement besoin d'utiliser <Location /output> à la place (ou d'utiliser <Directory> au lieu de <Location>) - c'est ce que je suppose en fonction de la quantité de données de configuration que vous avez fournie.

Compte tenu de ce qui précède, vous aurez besoin de quelque chose comme ceci (désolé, je ne peux pas me connecter à ma boîte Apache pour le tester):

<Location /output>
    Dav On
    <LimitExcept GET HEAD OPTIONS PUT>
        Allow from all
    </LimitExcept>
</Location>
4
LazyOne