Существуют ли какие-либо константы в .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
, поэтому не используется - и это перечисление, поэтому для использования имени в атрибуте вам понадобится немного хакера.
Ответ 2
В пространстве имен System.Web.Mvc есть HttpVerbs.
https://msdn.microsoft.com/en-us/library/system.web.mvc.httpverbs(v=vs.118).aspx
Ссылка может быть выбрана в разделе "Ассембли", "Расширения"