2008-11-10 11 views
69

Potrzebuję sprawdzić RequestType z HttpRequest w ASP.NET (lub WebRequest.Method). Wiem, że mogę po prostu użyć wartości ciągu "POST" lub "GET" dla typu żądania, ale mógłbym przysiąc, że była gdzieś w jakiejś klasie w .NET, która zawierała wartości.Gdzie jest stała dla wartości "HttpRequest.RequestType" i "WebRequest.Method" w .NET?

Z ciekawości Zastanawiałem się, czy ktoś wie, co klasa te stałe łańcuchowe dla GET i POST były w. Próbowałem szukają w internecie, ale nie miałem szczęścia, więc pomyślałem, że pytam tutaj.

Odpowiedz

93
System.Net.WebRequestMethods.Http 
    .Connect = "CONNECT" 
    .Get = "GET" 
    .Head = "HEAD" 
    .MkCol = "MKCOL" 
    .Post = "POST" 
    .Put = "PUT" 

Jednak ostatecznie; od const wyrażeń są spalane do wywołującego, jest to identyczne z użyciem "GET" itp., po prostu bez ryzyka literówki.

+13

Interesujące, dlaczego nie ma metody DELETE i "*"? – Kuncevic

+3

Brakuje OPCJE i TRACE. –

+0

Brakuje również słowa "PATCH". – RBT

15

W środowisku ASP.NET MVC są one w wersji System.Web.Mvc.HttpVerbs. Ale wszystkie metody, które przyjmują jedną z tych wartości wyliczeniowych, również mają nadpisanie tekstu, ponieważ nie ma pełnego zestawu czasowników HTTP, a jedynie zestaw aktualnie zdefiniowanych wartości (patrz here i here i here).

Nie można utworzyć wyliczenia, które obejmuje wszystkie czasowniki, ponieważ istnieje możliwość, że czasowniki mogą być dodawane, i enumerations have versioning issues, które sprawiają, że jest to niepraktyczne.

23

Istnieje również System.Net.Http.HttpMethod, który może służyć zamiast wyliczania. Można je porównać aMethod == HttpMethod.Get itp. Aby uzyskać wywołanie nazwy metody ciąg, np. HttpMethod.Get.Method.

+5

Ma to tę zaletę, że działa w rdzeniu Asp.Net, jak również – superjos

+2

Zastanawiam się tylko, dlaczego nie zadeklarowały tych pól jako stałych zamiast statycznych pól tylko do odczytu. Zaletą stałych jest to, że można je przekazać jako domyślne parametry (np. "Void Request" (metoda HttpMethod = HttpMethod.Get) '). – Shimmy

+0

@Shimmy Wadą stałych jest to, że są one wypiekane w zestawie referencyjnym podczas kompilacji poprzez proste podstawianie. Oznacza to, że jeśli zestaw definiujący stałe zmienia ich wartości i jest zastępowany, wszelkie zespoły referencyjne zachowują oryginalne, bez błędnych wartości stałych. Prawdopodobieństwo, że metody HTTP kiedykolwiek się zmienią, to jednak inna historia ... –

Powiązane problemy