2010-07-21 167 views
0

我工作的一个WCF REST服务,并在服务我有两个方法具有相同的URITemplate。其中一个标记为WebGet,另一个标记为使用PUT作为方法的WebInvoke。WCF - 路由问题

[WebGet(URITemplate="{name}")] 
public Something GetSomethingNamed(string name) 


[WebInvoke(Method="PUT", URITemplate="{name}")] 
public Something AddSomethingNamed(Something somethingToAdd) 

当试图在服务测试的东西,处理异常,通过试图浏览到在IE中我收到AddsomethingNamed所需要的参数为NAME错误GET方法最好的方式。

我稍微这种反应感到困惑,我甚至不知道它是如何得到的PUT方法,从我所知道的网络浏览器甚至不直接支持PUT。

回答

1
[WebInvoke(Method="PUT", URITemplate="{name}")] 
public Something AddSomethingNamed(Something somethingToAdd) 

在你上面提到的URI模板中的代码中,你提到{name}这意味着你的方法接受多一个参数“name”。

所以,你的方法签名应该是以下

[WebInvoke(Method="PUT", URITemplate="AddSomethingNamed")] 
public Something AddSomethingNamed(Something somethingToAdd) 

OR

[WebInvoke(Method="PUT", URITemplate="{name}")] 
public Something AddSomethingNamed(string name, Something somethingToAdd)