.net RESTful资源的WCF模板

.net RESTful资源的WCF模板,.net,wcf,c#-4.0,.net,Wcf,C# 4.0,,WCF无法区分以下URL以返回用户和特定用户的列表: /users /users/{id} WCF4仍然是这样吗?您现在可以这样做: [OperationContract(Name="Op1")] [WebInvoke(Method= "GET", UriTemplate = "DoWork/")] int[] DoWork(); [OperationContract(Name = "Op2")] [WebInvoke(Method = "GET", UriTemplate = "DoW

,WCF无法区分以下URL以返回用户和特定用户的列表:

/users 
/users/{id}
WCF4仍然是这样吗?

您现在可以这样做:

[OperationContract(Name="Op1")]
[WebInvoke(Method= "GET", UriTemplate = "DoWork/")]
int[] DoWork();

[OperationContract(Name = "Op2")]
[WebInvoke(Method = "GET", UriTemplate = "DoWork/{id}")]
int[] DoWork(string id);
重要的是OperationContract必须具有Name=属性,每个操作都有不同的名称。

您现在可以这样做:

[OperationContract(Name="Op1")]
[WebInvoke(Method= "GET", UriTemplate = "DoWork/")]
int[] DoWork();

[OperationContract(Name = "Op2")]
[WebInvoke(Method = "GET", UriTemplate = "DoWork/{id}")]
int[] DoWork(string id);

重要的是OperationContract必须具有Name=属性,每个操作都有不同的名称。

David的答案很好,但我会使用:

[OperationContract(Name="Op1")]
[WebGet(UriTemplate = "DoWork/")]
int[] DoWork();

[OperationContract(Name = "Op2")]
[WebGet(UriTemplate = "DoWork/{id}")]
int[] DoWork(string id);

大卫的回答很好,但我会用:

[OperationContract(Name="Op1")]
[WebGet(UriTemplate = "DoWork/")]
int[] DoWork();

[OperationContract(Name = "Op2")]
[WebGet(UriTemplate = "DoWork/{id}")]
int[] DoWork(string id);

+很好的一点是,WebGet可能比WebInvoke更适合REST服务Get。我不确定WebGet/WebInvoke的理想推荐模式是什么我很确定这两种模式之间没有区别,只是WebGet上没有方法定义,因为它是隐式的。WebGet的存在似乎仅仅是因为绝大多数web服务是数据提供者而不是数据接收者。除了它的名称和它隐式实现GET的事实之外,这两个似乎是相同的。Jonathan,没有。据我所知,操作合同名称没有在URL中公开。事实上,我甚至从未在OperationContract属性中使用Name参数。我通常只是把[经营合同]放进去。对于URL来说,唯一重要的部分是服务端点URL+UriTemplate字符串模式。但是,由于我从未使用Name参数,可能我弄错了。也许如果它在那里,就会在URL中使用。不完全确定,但我不这么认为。+1很好的一点,WebGet可能比WebInvoke for REST服务更好。我不确定WebGet/WebInvoke的理想推荐模式是什么我很确定这两种模式之间没有区别,只是WebGet上没有方法定义,因为它是隐式的。WebGet的存在似乎仅仅是因为绝大多数web服务是数据提供者而不是数据接收者。除了它的名称和它隐式实现GET的事实之外,这两个似乎是相同的。Jonathan,没有。据我所知,操作合同名称没有在URL中公开。事实上,我甚至从未在OperationContract属性中使用Name参数。我通常只是把[经营合同]放进去。对于URL来说,唯一重要的部分是服务端点URL+UriTemplate字符串模式。但是,由于我从未使用Name参数,可能我弄错了。也许如果它在那里,就会在URL中使用。不完全确定,但我不这么认为。