Eric Schoonover
Eric Schoonover

Reputation: 48412

Are there any constants in the .NET framework for the different web method types (GET, PUT, POST, DELETE, HEAD)?

I just noticed while creating a RESTful WCF service that the Method parameter on the WebInvoke attribute is case sensitive (CAPS required).

So,

[WebInvoke(Method = "Delete")]

is not equal to

[WebInvoke(Method = "DELETE")]

This mistake was causing a ProtocolException:

System.ServiceModel.ProtocolException: The remote server returned an unexpected response: (405) Method Not Allowed.

I was wondering is there a set of constants in the .NET framework that I should be using in place of "DELETE" in the above example. I could of course define my own set of constants, but if feels like something that probably exists in the framework and I am just missing it.

Upvotes: 15

Views: 5519

Answers (2)

LiQuick.net
LiQuick.net

Reputation: 199

The System.Web.Mvc namespace has HttpVerbs. https://msdn.microsoft.com/en-us/library/system.web.mvc.httpverbs(v=vs.118).aspx The reference can be selected under Assemblies, Extensions

Upvotes: 0

Marc Gravell
Marc Gravell

Reputation: 1064024

A bit indirect, but there are System.Net.WebRequestMethods.Http constants:

public const string Connect = "CONNECT";
public const string Get = "GET";
public const string Head = "HEAD";
public const string MkCol = "MKCOL";
public const string Post = "POST";
public const string Put = "PUT";

but no "DELETE" - suggest you make your own...

Annoyingly, there is a System.Web.HttpVerb, but it is internal, so not usable - and it is an enum, so to use the name in an attribute you'd need a bit of hackery.

Upvotes: 12

Related Questions