Php 如何在Azure中启用PUT请求?

Php 如何在Azure中启用PUT请求?,php,iis,azure,azure-web-app-service,Php,Iis,Azure,Azure Web App Service,我正在Azure上构建REST API,但当我尝试通过PUT方法访问端点时,我会得到一个HTTP 405“不允许的方法”状态以及一条IIS错误消息: 无法显示您正在查找的页面,因为无效的 正在使用方法(HTTP谓词) 如何启用PUT方法以及Azure默认配置设置默认阻止的其他方法? 我尝试将web.config文件添加到我的应用程序根目录中,动词元素的allowUnlisted设置为true: <?xml version="1.0" encoding="utf-8"?> <co

我正在Azure上构建REST API,但当我尝试通过PUT方法访问端点时,我会得到一个
HTTP 405“不允许的方法”
状态以及一条IIS错误消息:

无法显示您正在查找的页面,因为无效的 正在使用方法(HTTP谓词)

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

我尝试将web.config文件添加到我的应用程序根目录中,动词元素的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的世界对我来说非常陌生。感谢您的帮助


谢谢

将其添加到您的
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=“*”
以允许所有动词。

将其添加到
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=“*”
以允许所有动词。

将以下内容添加到
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,当前默认为PHP5.4,但如果选择PHP5.3或PHP5.5,则需要修改PHPCGI处理程序的路径

将以下内容添加到
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,当前默认为PHP5.4,但如果选择PHP5.3或PHP5.5,则需要修改PHPCGI处理程序的路径

要完成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>

非常琐碎,但只是为了获取信息


更新:固定路径

要完成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>

非常琐碎,但只是为了获取信息


更新:固定路径

您使用的是什么语言?PHP、Node.js、ASP/ASP.NET或Python?我使用的是PHP(Laravel4)。你使用的是什么语言?PHP、Node.js、ASP/ASP.NET或Python?我正在使用PHP(Laravel 4)。我已将这些解决方案添加到Microsoft Azure网站备忘单中。。这成功了!非常感谢你!我已经被这堵了好几个小时了。我已将备忘单添加到书签中,这也非常有用。MS不允许在门户中使用HTTP方法配置,这似乎很明显。我已将这些解决方案添加到Microsoft Azure网站备忘单中。。这成功了!非常感谢你!我已经被这堵了好几个小时了。我已将备忘单添加到书签中,这也非常有用。遗憾的是,MS不允许在门户中使用HTTP方法配置,这似乎已经足够明显了。不,对于PHP来说是不允许的。这是针对Asp.Net的。但是你从来没有在问题中提到过php。不,对于php不会。这是针对Asp.Net的。但是你从来没有在问题中提到过php。