0

如何像这样设置 UriTepmlate Attr:

/FunctionName?{json_data}

因为使用这个网络服务的人怎么称呼这种方式

例如: http://localhost/xxx/service/Func ?{"x":"aaa","y":"bbb"}

我试过了

[OperationContract]
    [WebGet(UriTemplate = "/Func?{request}",
        BodyStyle = WebMessageBodyStyle.Bare,
        ResponseFormat = WebMessageFormat.Json)]
    Result Func(string request);

比我得到那个错误:

UriTemplate '/Func?{request}' 无效;查询字符串的每个部分都必须采用“name”形式或“name=value”形式,其中 name 是一个简单的文字。有关更多详细信息,请参阅 UriTemplate 的文档。参数名称:模板

当我设置

 [OperationContract]
    [WebGet(UriTemplate = "/Func?request={request}",
        BodyStyle = WebMessageBodyStyle.Bare,
        ResponseFormat = WebMessageFormat.Json)]
    Result Func(string request);

它工作正常,但这不是他们想要的。

4

1 回答 1

0

你不能这样设置。原因是“?” 在 URL 中表示 URL 参数将跟随,并且 URL 参数始终采用“name=value”的形式

你可以做

[OperationContract]
[WebGet(UriTemplate = "/Func?request={request}",
    BodyStyle = WebMessageBodyStyle.Bare,
    ResponseFormat = WebMessageFormat.Json)]
Result Func(string request);

或者

[OperationContract]
[WebGet(UriTemplate = "/Func/{request}",
    BodyStyle = WebMessageBodyStyle.Bare,
    ResponseFormat = WebMessageFormat.Json)]
Result Func(string request);

如果你像最后一个例子那样做,你的参数请求只能是一个字符串。

于 2015-04-22T11:14:52.887 回答