Дополнительные / необязательные параметры строки запроса в шаблоне URI в WCF - PullRequest
4 голосов
/ 11 февраля 2011

Я написал простую службу REST в WCF, в которой я создал 2 метода, используя один и тот же шаблон URI, но с другим методом (POST и GET).Для метода GET я также отправляю дополнительные параметры запроса следующим образом:

    [WebInvoke(Method = "POST", UriTemplate = "users")]
    [OperationContract]
    public bool CreateUserAccount(User user)
    {
        //do something
        return restult;
    }

    [WebGet(UriTemplate = "users?userid={userid}&username={userName}")]
    [OperationContract]
    public User GetUser(int userid, string userName)
    {
       // if User ID then 
       //   Get User By UserID
       //else if User Name then 
       //   Get User By User Name
       //if no paramter then do something

    }

, когда я вызываю CreateUserAccount с методом POST, он работает нормально, но когда я вызываю метод GetUser с помощью GET и отправляю только один параметр строки запроса (userIDили имя_пользователя) выдает ошибку «HTTP-метод не разрешен», но при отправке обоих параметров все в порядке.

Кто-нибудь может мне помочь?

1 Ответ

5 голосов
/ 27 июня 2012

Не указывайте ни один из необязательных параметров и используйте WebOperationContext.Current.IncomingRequest.UriTemplateMatch.QueryParameters для доступа ко всем из них.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...