【问题标题】:Additional/Optional query string parameters in URI Template in WCFWCF 中 URI 模板中的附加/可选查询字符串参数
【发布时间】:2011-06-25 13:50:12
【问题描述】:

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

    }

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

谁能帮帮我?

【问题讨论】:

  • 两者的基本 URI 相同,您是否尝试过将一个从“用户”更改为其他内容?只问,因为重载在 Web 服务中不起作用。

标签: c# wcf


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2011-02-27
    • 2023-02-09
    • 2012-08-28
    • 1970-01-01
    • 2012-08-05
    • 2020-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多