2015-03-17 2 views
2

В настоящее время я работаю над проектом, в котором предыдущий разработчик использовал * для метода WebInvoke.WebInvoke Method = *

[OperationContract] 
[WebInvoke(Method = "*", UriTemplate = "/Path", ResponseFormat = WebMessageFormat.Json)] 
void SetPath(PathInfo pathInfo); 

Мне интересно, для чего это * для - если угодно. Я ожидал GET, PUT, POST и т. Д. ... не звезду. Первоначально я думал о умолчанию (POST), но нет причин использовать *, если он такой же, как и по умолчанию.

MSDN, похоже, не обращается к нему (MSDN WebInvokeAttribute.Method), но на самом деле они не адресуют ни один из методов, кроме POST, который является значением по умолчанию.

Это сообщение (Implementing Method), по-видимому, указывает на то, что * следует использовать с методом OPTIONS в качестве UriTemplate. Итак, я просто пытаюсь выяснить, является ли он неправильным или если его код действительно, и в этом случае я хотел бы знать, что это значит.

+2

Я угадываю его за ny метод. –

ответ

1

Я декомпилировал System.ServiceModel.Description.WebHttpBehavior, который использует WebInvoke, и вы можете видеть, что это всего лишь действие подстановочного знака, соответствующее всем.

public class WebHttpBehavior : IEndpointBehavior, IWmiInstanceProvider 
{ 
    internal const string GET = "GET"; 
    internal const string POST = "POST"; 
    internal const string WildcardAction = "*"; 
    internal const string WildcardMethod = "*"; 

Это поймать все поведение

0

Использование WebInvoke (метод = "" ... это способ поддержки CORS запросов (Предполетный, метод = 'OPTIONS') из браузера. Использование метода «» в вашем методе обслуживания направит запрос предварительной проверки CORS в ваш сервисный метод (в дополнение к get/post/put и т. Д.) И позволит вам обработать предполетную запись. В противном случае ваш метод не будет вызываться при запросах предполетной проверки , и предполетный сбой (в браузере)

Смежные вопросы