ASP.NET Ручки PUT/DELETE

Это относится как к ASP.NET вообще, так и к Web API.

Как мы можем обрабатывать глаголы PUT/DELETE без, что позволяет использовать RAMMFAR (RunAllManagedModulesForAllRequests).

Я не могу настроить сопоставление обработчиков в IIS, поскольку мой сайт размещен на веб-роли Azure, и любые изменения, которые я делаю, не будут сохраняться.

Ответ 1

@Ответ Александра поставил меня на правильный путь. Должен добавить следующее, чтобы получить DELETE/PUT, обработанный ASP.NET:

  <system.webServer>
    <modules runAllManagedModulesForAllRequests="false"/>
    <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>
  </system.webServer>

Ответ 2

FWIW, мы изменили шаблоны проектов MVC/Web API, чтобы разрешить все общие HTTP-глаголы, используя именно этот механизм выше. Это изменение будет доступно в следующем официальном падении (которое будет RTM). Это будет работать по умолчанию.

Ответ 3

Уже пытались разрешить глаголы в разделе System.WebServer в web.config?

Что-то вроде этого:

<System.WebServer>
     <handlers>
        <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
        <add name="ExtensionlessUrlHandler-Integrated-4.0" 
        path="*." 
        verb="GET,HEAD,POST,DEBUG,PUT,DELETE" 
        modules="IsapiModule" 
        scriptProcessor="C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" 
        resourceType="Unspecified" 
        requireAccess="Script" 
        preCondition="classicMode,runtimeVersionv4.0,bitness64" 
        responseBufferLimit="0" />
    </handlers>
</System.WebServer>