当url段为json字符串时,在访问WCF Rest服务(WebGet)时未找到404

时间:2016-06-18 13:12:12

标签: c# json wcf wcf-rest

在我的项目中,我必须将动态Json字符串传递给WCF Rest服务web get。

当我传递一些字符串时,一切正常。

http://localhost:58014/MyService.svc/api/queries/somestirng

但是当我传递json字符串作为url段时未发现错误。

{"键":" UserHomePageInfoQuery""消息":" {\"用户名\":\& #34; usr83 \"}"}

http://localhost:58014/MyService.svc/api/queries/257b%2522Key%2522%253a%2522UserHomePageInfoQuery%2522%252c%2522Message%2522%253a%2522%257b%255c%2522UserName%255c%2522%253a%255c%2522usr83%255c%2522%257d%2522%257d

这是我的服务操作合约定义

    [OperationContract]
    [WebGet(UriTemplate = "api/queries/{queryString}",                        
        RequestFormat = WebMessageFormat.Json,
        ResponseFormat = WebMessageFormat.Json)]
    Response Query(string queryString);

我知道我可以使用POST,但所有服务请求都是查询

我有POST的其他命令服务

[OperationContract]
        [WebInvoke(UriTemplate = "api/commands/",
            Method = "POST",            
            RequestFormat = WebMessageFormat.Json,
            BodyStyle = WebMessageBodyStyle.Bare,
            ResponseFormat = WebMessageFormat.Json)]       
        Response Execute(Request request)

1 个答案:

答案 0 :(得分:0)

我在{queryString}参数中使用通配符(*),这意味着"其余的URI"

https://msdn.microsoft.com/en-us/library/bb675245.aspx

    [OperationContract]
    [WebGet(UriTemplate = "api/queries/{*queryString}",                        
        RequestFormat = WebMessageFormat.Json,
        ResponseFormat = WebMessageFormat.Json)]
    Response Query(string queryString);