WCF中URI模板中的附加/可选查询字符串参数

时间:2011-02-11 13:43:04

标签: c# wcf

我在WCF中编写了一个简单的REST服务,其中我使用相同的URI模板但使用不同的方法(POST和GET)创建了2个方法。对于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

    }

当我用方法POST调用CreateUserAccount时它工作正常但是当我使用GET调用GetUser方法并且只发送一个查询字符串参数(userID或UserName)时,它给出错误“HTTP Method not allowed”但是如果发送两个参数的话好不好。

任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:5)

不要指定任何可选参数,并使用WebOperationContext.Current.IncomingRequest.UriTemplateMatch.QueryParameters访问所有参数。