Существуют ли какие-либо константы в .NET Framework для разных типов веб-методов (GET, PUT, POST, DELETE, HEAD)?

Я заметил только при создании службы RESTful WCF, что параметр Method в атрибуте WebInvoke чувствителен к регистру (требуется CAPS).

Итак,

[WebInvoke(Method = "Delete")]

не равно

[WebInvoke(Method = "Delete")]

Эта ошибка вызывала ProtocolException:

System.ServiceModel.ProtocolException: удаленный сервер возвратил неожиданный ответ: (405) Метод не разрешен.

Мне было интересно, есть ли набор констант в .NET framework, который я должен использовать вместо "DELETE" в приведенном выше примере. Я мог бы, конечно, определить свой собственный набор констант, но если он чувствует себя чем-то, что, вероятно, существует в рамках, и я просто пропустил его.

Ответы

Ответ 1

Немного косвенно, но существуют константы System.Net.WebRequestMethods.Http:

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";

но нет "УДАЛИТЬ" - предлагаю вам сделать свой собственный...

Раздражающе, существует System.Web.HttpVerb, но это internal, поэтому не используется - и это перечисление, поэтому для использования имени в атрибуте вам понадобится немного хакера.