1

我有一个非常简单的 WCF 服务设置,其方法类似于:

[OperationContract]
[WebGet(UriTemplate = "/GetById/{id}")]
ResponseSingle<BinderViewModel> GetById(string id);

当我尝试使用 GUID 之类的...

http://localhost/services/myservicename.svc/GetById/5c3f04d7-f96e-4acd-847b-6da5937e

它返回 500 和异常说明:

长度不能小于零。参数名称:长度

如果我删除 UriTemplate 而是将其按为:

http://localhost/services/myservicename.svc/GetById?id=5c3f04d7-f96e-4acd-847b-6da5937e

它工作正常。

我已经阅读了一些内容,看起来当它增长>一定长度时请求会失败。

想知道以前是否有其他人被此咬伤,如果有,是否有运气解决?

干杯,蒂姆

4

1 回答 1

0
[WebGet(UriTemplate = "/GetById/{id}")]

应该:

[WebGet(UriTemplate = "/GetById?id={id}"]

添加更多信息(因为我有点困惑)/Action/{variable}是为了服务的路径。即 /GetBy/ID 或 /GetBy/Name

然而,该方法期望一个值来完成服务的处理,因此这必须是语法中的查询?CaseSenstiveMethodParameterName={queryParameter}

MSDN URL 模板帮助

于 2013-08-28T21:20:01.560 回答