2015-05-18 5 views
11

Obwohl die Anforderung DELETE lokal erfolgreich ausgeführt wird, funktioniert sie nicht, wenn ich meine App für MS Azure bereitstelle.Wie aktiviert man DELETE, PUT für PHP App bei IIS?

Hier ist, was ich in der Konsole erhalten, wenn versuchen, einen Datensatz zu löschen:

DELETE http://mywebsite.azurewebsites.net/api/subjects/1 405 (Method Not Allowed) 

Meine App nutzt mySQL bei cleardb

Wie ein solches Problem zu beheben?

EDIT

Meine App ist eine PHP 5.5-Anwendung, hier ist das, was ich in web.config versucht zu tun, damit DELETE und PUT, aber es hat nicht funktioniert:

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 
    <system.webServer> 
     <rewrite> 
     <rules> 
     <rule name="Imported Rule 1" stopProcessing="true"> 
     <match url="^(.*)$" ignoreCase="false" /> 
     <conditions logicalGrouping="MatchAll"> 
         <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" /> 
         <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /> 
         </conditions> 
         <action type="Rewrite" url="index.php?url={R:1}" appendQueryString="true" /> 
       </rule> 
      </rules> 
     </rewrite> 

<validation validateIntegratedModeConfiguration="false" /> 
    <modules runAllManagedModulesForAllRequests="true"> 
     <remove name="WebDAVModule" /> 
    </modules> 
    <security> 
     <requestFiltering> 
     <verbs applyToWebDAV="false"> 
      <add verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS,XYZ" allowed="true" /> 
     </verbs> 
     </requestFiltering> 
    </security> 

     <handlers> 
<remove name="PHP55_via_FastCGI" /> 
    <add name="PHP55_via_FastCGI" path="*.php" verb="GET, PUT, POST, HEAD, OPTIONS, TRACE, PROPFIND, PROPPATCH, MKCOL, COPY, MOVE, LOCK, UNLOCK" modules="FastCgiModule" scriptProcessor="D:\Program Files (x86)\PHP\v5.5\php-cgi.exe" resourceType="Either" requireAccess="Script" /> 

       <remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" /> 
       <remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" /> 
       <remove name="ExtensionlessUrlHandler-Integrated-4.0" /> 
       <add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS,XYZ" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" /> 
       <add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS,XYZ" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" /> 
       <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS,XYZ" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" /> 
      </handlers> 

    </system.webServer> 
</configuration> 
+0

beachten Sie die Leerzeichen zwischen GET, PUT, etc. in der "PHP55_via_FastCGI" Handler-Definition - in meinem Fall war es der Blockierungsfaktor - sollte es keine Leerzeichen geben –

Antwort

2

Ich denke, PUT und DELETE sind standardmäßig in WebApi/IIS8 deaktiviert, so wie es aussieht. Ziemlich viel Diskussion über diese here.

+0

überprüfen Sie bitte die EDIT über –

+0

Ah Entschuldigung, ich weiß nicht über PHP-Web-Service-Konfiguration, ich dachte, Sie verwenden WebApi. –

2

Wie ich einfach zu IIS Benutzeroberfläche gehen wissen, fordern Sie dann Filterung, dann HTTP-Verben. schließlich eine neue Regel zu den gewünschten Verben hinzufügen

+0

aber ich bin nicht vertraut mit den Einstellungen Remotedesktop für MS Azure .. –

Verwandte Themen