Chcę zaimplementować ostatnio zatwierdzony czasownik HTTP protokołu PATCH w usłudze RESTful zaimplementowanej z ASP MVC 3. Dodałem następujące ustawienia w pliku web.config.Rejestrowanie czasu HTTP protokołu HTTP w 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>
Metoda działania jest ozdobiona atrybutem AcceptVerbs("PATCH")
.
Usługa działa poprawnie z czasownikiem PATCH. Adres URL zostanie przekierowany do właściwej metody działania i zwróci prawidłowe dane.
Dziwne jest to, że jeśli używam innego adresu URL, który nie pasuje do żadnej z tras przy użyciu czasownika PATCH, IIS zwraca "200 OK" zamiast "404 Not Found". Wszystkie standardowe czasowniki (GET, PUT, DELETE, POST, HEAD, OPTIONS) nie mają tego problemu.
Czy muszę zarejestrować dodatkowe programy obsługi dla komendy PATCH lub czy jest to problem z routingiem? Każda pomoc jest doceniana.
Powyższa konfiguracja nie używa żadnych niestandardowych funkcji obsługi. "ProtocolSupportModule" to standardowy program obsługi ASP.NET, który jest zarejestrowany w standardowych czasownikach, takich jak GET, POST itp. –
Na serwerze czasownik PATCH działa poprawnie bez deklaracji ProtocolSupportModule. Przyjmuję tę odpowiedź. Coś jest prawdopodobnie źle skonfigurowane na mojej stacji roboczej. –