Voglio realizzare il verbo PATCH HTTP recentemente approvato in un servizio RESTful implementato con ASP MVC 3. Ho aggiunto le seguenti impostazioni nel file web.config.Registrazione PATCH HTTP verbo in IIS 7/7.5
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<handlers>
<add name="PATCHVerbHandler" path="*" verb="PATCH" modules="ProtocolSupportModule" requireAccess="None" />
</handlers>
<security>
<requestFiltering>
<verbs>
<add verb="PATCH" allowed="true" />
</verbs>
</requestFiltering>
</security>
</system.webServer>
</configuration>
Il metodo dell'azione è decorato con l'attributo AcceptVerbs("PATCH")
.
Il servizio funziona correttamente con il verbo PATCH. L'URL viene instradato al giusto metodo di azione e restituisce i dati corretti.
Il problema strano è che se si utilizza un URL diverso che non corrisponde a nessuna route utilizzando il verbo PATCH, IIS restituisce "200 OK" anziché "404 non trovato". Tutti i verbi standard (GET, PUT, DELETE, POST, HEAD, OPTIONS) non hanno questo problema.
Ho bisogno di registrare i gestori supplementari per il verbo PATCH o è un problema di routing? Qualsiasi aiuto è apprezzato.
La configurazione precedente non utilizza alcun gestore personalizzato. "ProtocolSupportModule" è il gestore ASP.NET standard registrato con i verbi standard come GET, POST, ecc. –
Sul server il verbo PATCH funziona correttamente senza la dichiarazione ProtocolSupportModule. Accetterò questa risposta Qualcosa è probabilmente configurato in modo errato sulla mia workstation. –