Der in IIS gehostete WCF-REST-Dienst unterstützt PUT und DELETE nicht

8

Ich habe einen WCF REST (alias WebHttp) Dienst in .NET 4 erstellt, indem ich Microsoft WCF REST Service Template 40 verwendet habe. Ich hosste den Dienst in IIS 6.

Die Servicevorlage verwendet die RouteTable in Global.asax als eine Möglichkeit, "saubere" URLs zu erstellen, die ".svc" nicht enthalten. Zum Beispiel:

Ссылка

GET und POST funktionieren gegen diese URL, aber PUT und DELETE führen zu HTTP 501, "Not implemented".

Wenn ich eine einfache .svc-Datei wie folgt erstelle:

%Vor%

Dann kann ich PUT und DELETE für diese URL verwenden:

Ссылка

Weiß jemand, ob es möglich ist, PUT und DELETE gegen die oben genannte "saubere" URL zu arbeiten? Es scheint, dass es keine Möglichkeit gibt, IIS so zu konfigurieren, dass dies erlaubt wird, weil es keine Dateierweiterung gibt, für die Einstellungen konfiguriert werden können, und ich möchte PUT und DELETE nicht global zulassen.

    
Mike Taverne 21.08.2010, 01:05
quelle

2 Antworten

4

Ich habe eine Weile nicht mit IIS6 gearbeitet (und ich habe es nicht installiert, deshalb gehe ich hier aus dem Speicher), aber ich musste etwas Ähnliches mit IIS6 implementieren, um plattformunabhängige URLs in IIS6 zu leiten.

Sie können Platzhalter-Skriptzuordnungen auf Ordnerbasis aktivieren, indem Sie den IIS-Manager hacken. Diese Blogpost ist, was ich verfolgt habe und es funktioniert wirklich gut (und das link ) bietet ein wenig mehr Hintergrund). Es ist wirklich ein Fehler im Manager, nicht IIS selbst (zumindest das sage ich mir selbst).

Können Sie Ihre Dienste in einem Unterordner auf Ihrer Website referenzieren (z. B. Ссылка )? Wenn ja, und wenn Sie den IIS-Manager-Hack oben implementieren, denke ich, dass Sie alle HTTP-Verben für dieses Verzeichnis aktivieren können. Auch hier gehe ich aus dem Speicher (und wir haben nur GETs und POSTs implementiert, also habe ich mich nicht mit PUTs und DELETEs beschäftigt), also hoffe ich, dass ich das richtig mache.

Lass es mich wissen, wenn du mehr Informationen brauchst oder wenn meine Erinnerung nachlässt. :) Ich hoffe das hilft!

    
David Hoerster 21.08.2010, 01:39
quelle
2

Wenn Ihre Webanwendung in mehreren Entwicklungs- / Produktionsumgebungen bereitgestellt wird, scheint der beste Weg WebDAV auf der Ebene web.config zu deaktivieren. Entfernen Sie dazu das WebDAVModule und den WebDAV-Handler wie im folgenden Beispiel:

%Vor%     
DanilF 06.09.2012 20:22
quelle

Tags und Links