如何在Azure中启用PUT请求


How do I enable PUT requests in Azure?

我正在Azure上构建一个REST API,但是当我试图通过PUT方法访问端点时,我得到一个HTTP 405 "Method Not Allowed"状态以及一个IIS错误消息:

由于无效,无法显示您正在查找的页面方法(HTTP动词)正在使用。

我如何启用PUT方法,以及其他可能被Azure的默认配置设置默认阻止的方法?

我试着添加一个网页。配置文件到我的应用程序的根,并在verbs元素上将allowUnlisted设置为true:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
   <system.webServer>
      <security>
         <requestFiltering>
            <verbs applyToWebDAV="false" allowUnlisted="true" />
         </requestFiltering>
      </security>
   </system.webServer>
</configuration>

这改变不了什么。

我是一个开源的家伙,所以IIS的世界对我来说很陌生。如有任何帮助,不胜感激。

谢谢!

system.webServer元素中的web.config添加以下内容:

<handlers>
  <remove name="PHP54_via_FastCGI" />
  <add name="PHP54_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.4'php-cgi.exe" resourceType="Either" requireAccess="Script" />
</handlers>

这适用于内置版本的PHP,当前默认版本是PHP 5.4,但如果您选择了PHP 5.3或PHP 5.5,则需要修改PHP -cgi处理程序的路径。

要完成cory_flower给出的答案,您应该根据给出的版本更改54,

示例:7.2给出:

<handlers>
  <remove name="PHP72_via_FastCGI" />
  <add name="PHP72_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'v7.2'php-cgi.exe" resourceType="Either" requireAccess="Script" />
</handlers>

非常简单,但仅用于info

更新:固定路径

添加到您的web.config/system.webServer:

<handlers>
  <remove name="ExtensionlessUrl-Integrated-4.0" />
  <add name="ExtensionlessUrl-Integrated-4.0"
       path="*."
       verb="GET,HEAD,POST,DEBUG,DELETE,PUT"
       type="System.Web.Handlers.TransferRequestHandler"
       preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>

或者不指定允许的动词,而说verb="*"允许所有的动词。