使用UriTemplate的WCF服务 - “长度不能小于零”

时间:2012-04-26 09:46:29

标签: wcf rest .net-4.0 sitecore

我设置了一个非常简单的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

工作正常。

我已经做了一些阅读,看起来这个请求会在它增长时失败&gt;一定的长度。

想知道是否还有其他人曾经被这个人咬过,如果有的话有什么运气可以解决它?

干杯, 添

1 个答案:

答案 0 :(得分:0)

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

应该是:

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

添加更多信息(因为我困惑了一秒钟),/Action/{variable}用于服务的路径。即,/ GetBy / ID或/ GetBy / Name

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

中的查询

MSDN URL Template Help