2013-04-09 1 views
4

Je construis un simple service web PHP en utilisant Azure Web Sites et j'ai du mal à le faire pour supporter les méthodes http PUT et DELETE. En supposant que ce soit quelque chose qui devra aller dans le fichier web.config - j'ai essayé quelques options autour des interwebs mais aucun d'eux ne semble fonctionner correctement. Des idées?Azure Websites API PHP - 405 Méthode non autorisée sur PUT et DELETE

Voici le fichier web.config tel qu'il est actuellement:

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 
    <system.webServer> 
    <handlers> 
    </handlers> 
    <security> 
    </security> 
    <directoryBrowse enabled="false" /> 
    <caching> 
     <profiles> 
     <add extension=".php" policy="DontCache" kernelCachePolicy="DontCache" /> 
     <add extension=".html" policy="CacheForTimePeriod" kernelCachePolicy="CacheForTimePeriod" duration="14:00:00" /> 
     </profiles> 
    </caching> 
    <rewrite> 
     <rules> 
     <rule name="block favicon" stopProcessing="true"> 
      <match url="favicon\.ico" /> 
      <action type="CustomResponse" statusCode="404" subStatusCode="1" 
      statusReason="The requested file favicon.ico was not found" 
      statusDescription="The requested file favicon.ico was not found" /> 
     </rule> 
     <rule name="Cols Rule" stopProcessing="true"> 
      <match url="^(.*)$" ignoreCase="false" /> 
      <conditions> 
      <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" /> 
      <add input="{URL}" pattern="^/favicon.ico$" ignoreCase="false" negate="true" /> 
      <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" /> 
      </conditions> 
      <action type="Rewrite" url="index.php?q={R:1}" appendQueryString="true" /> 
     </rule> 
     </rules> 
    </rewrite> 
    <defaultDocument> 
     <files> 
     <remove value="index.php" /> 
     <add value="index.php" /> 
     </files> 
    </defaultDocument> 
    </system.webServer> 
</configuration> 
+0

J'ai vu un fil similaire il y a quelques jours. Dans ce cas, il s'est avéré que verbe PUT était bloqué par le réseau interne. Pouvez-vous vérifier si ce n'est pas le cas ici? –

Répondre

3

Je ne vois pas que vous avez ajouté dans votre gestionnaire web.config. Je n'ai pas testé personnellement, mais quelqu'un a suggéré que PUT et DELETE devraient fonctionner avec le site Web de Windows Azure, mais que vous auriez besoin de les configurer correctement sur vos sites Web Windows Azure via web.config.

Après est la configuration simple, vous pouvez utiliser pour configurer:

<configuration> 
<system.webServer> 
    <handlers> 
     <remove name="PHP53_via_FastCGI" /> 
     <add name="PHP53_via_FastCGI" path="*.php" 
       verb="GET, PUT, POST, HEAD, DELETE" 
       modules="FastCgiModule" 
       scriptProcessor="D:\Program Files (x86)\PHP\v5.3\php-cgi.exe" 
       resourceType="Either" requireAccess="Script" /> 
    </handlers> 
</system.webServer> 
</configuration> 
+0

+0

Ce poste fait un excellent travail de couvrir toute la portée de les configurations sur les sites Web Windows Azure http://blog.maartenballiauw.be/post/2012/07/09/Tweaking-Windows-Azure-Web-Sites.aspx –

3

Il ne fonctionne pas avec SUPPRIMER comme la dernière option, et voici le code modifié pour PHP54 sur Azure. Mais merci à Avkash!

<handlers> 
    <remove name="PHP54_via_FastCGI" /> 
     <add name="PHP54_via_FastCGI" path="*.php" 
       verb="GET, PUT, POST, DELETE, HEAD" 
       modules="FastCgiModule" 
       scriptProcessor="D:\Program Files (x86)\PHP\v5.4\php-cgi.exe" 
       resourceType="Either" requireAccess="Script" /> 
    </handlers> 
+5

Maintenant que HEAD est la dernière option, il a cessé de fonctionner. J'ai ajouté une virgule après HEAD et maintenant ça marche à nouveau. Bizarre. –

+0

Nice, merci .. ajouter un mannequin fonctionne également. –

Questions connexes