Where is the constant for "HttpRequest.RequestType" and "WebRequest.Method" values in .NET?

C#.Netasp.net

C# Problem Overview


I need to check the RequestType of an HttpRequest in ASP.NET (or WebRequest.Method). I know that I can just use the string values "POST" or "GET" for the request type, but I could have sworn there was a constant somewhere in some class in .NET that contained the values.

Out of curiosity I was wondering if anyone knew what class these string constants for GET and POST were in. I've tried searching online but I've had no luck, so I thought I'd ask here.

C# Solutions


Solution 1 - C#

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

Ultimately, though; since const expressions are burned into the caller, this is identical to using "GET" etc, just without the risk of a typo.

Solution 2 - C#

Also exists System.Net.Http.HttpMethod which can serve instead of enum. You can compare them aMethod == HttpMethod.Get, etc. To get string method name call e.g. HttpMethod.Get.Method.

Solution 3 - C#

In ASP.NET MVC they're in System.Web.Mvc.HttpVerbs. But all methods that take one of these enum values also has a text override, as there is no complete set of HTTP verbs, only a set of currently defined values (see here and here and here).

You can't create an enumeration that covers all verbs, as there is the possibility that verbs can be added, and enumerations have versioning issues that make this impractical.

Solution 4 - C#

In ASP.NET Core you will find a collection of http method strings in the HttpMethods.cs class under the Microsoft.AspNetCore.Http namespace.

This class also offers boolean helpers such as IsGet() or IsPost() for better semantics.

Please note that these strings are exposed as public static readonly string and not as constants.

UPDATE 2020-05-17: GetCanonicalizedValue(string method) was added to the HttpMethods.cs class in ASP.NET Core v5, which returns the static instance equivalent to the provided string method name.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionDan HerbertView Question on Stackoverflow
Solution 1 - C#Marc GravellView Answer on Stackoverflow
Solution 2 - C#xmedekoView Answer on Stackoverflow
Solution 3 - C#user1228View Answer on Stackoverflow
Solution 4 - C#B12ToasterView Answer on Stackoverflow