Я создаю REST API на Azure, но когда я пытаюсь получить доступ к конечной точке через метод PUT, я получаю статус HTTP 405 "Method Not Allowed"
вместе с сообщением об ошибке 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
элемент system.webServer
:
<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.
Добавьте это в свой 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="*"
чтобы разрешить все глаголы.