Frage

Das RFC 2616 HTTP/1.1 Definition Gibt an, dass die folgenden gemeinsamen HTTP -Methoden vorhanden sind:

Holen Sie sich, Kopf, Post, setzen, löschen, verfolgen, Optionen, Verbindung herstellen

Aber die System.Web.Mvc.httpverbs Enum fehlt Trace, Optionen und Verbindung.

Ich habe einen Aktionsfilter, der das HTTPverB aus der Anfrage aufnimmt, um bestimmte Entscheidungen zu treffen (z. B. wenn eine Anforderung ein Modell des Basistyps A erhält, dann habe ich einige Daten festgelegt). Wirft ein ArgumentoutoFrangeException für Anfragen der letzten drei (hauptsächlich Optionen - sieht so aus, als würde es von Google Translate kommen):

public static HttpVerbs GetHttpVerb(this HttpRequestBase httpRequestBase)
{
    switch (httpRequestBase.HttpMethod)
    {
        case "GET":
            return HttpVerbs.Get;
        case "POST":
            return HttpVerbs.Post;
        case "PUT":
            return HttpVerbs.Put;
        case "DELETE":
            return HttpVerbs.Delete;
        case "HEAD":
            return HttpVerbs.Head;    
        default:
            throw new ArgumentOutOfRangeException("httpRequestBase");
    }
}

Ich bin mir nicht sicher, wie ich mich umgehen soll - irgendwelche Ideen?

Das einzige, was ich mir vorstellen kann, ist das Ändern aller Referenzierungscode, um zuerst die RAW -HTTP -Methode zu überprüfen, und rufen Sie dann nur das Dienstprogramm auf, wenn es sich nicht um Trace, Optionen oder Verbindung handelt. Das ist ein bisschen hacky.

Warum fehlt es in der Enum -Klasse? Gibt es einen bestimmten Grund dafür? Kann MVC einfach keine Anfragen dieser Typen bearbeiten?

Nach den Sounds der Optionsmethode sollte es nicht einmal an MVC gelangen und sollte von IIS selbst behandelt werden?

War es hilfreich?

Lösung

Am Ende habe ich meine eigene Aufzählung erstellt und benutzt das.

public enum HttpVerb
{
    Get,
    Head,
    Post,
    Put,
    Delete,
    Trace,
    Options,
    Connect
}

MVC scheint immer noch Anfragen von Typoptionen zu bearbeiten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top