2010-07-21 6 views
0

Je travaille sur un service WCF REST, et dans le service j'ai deux méthodes avec le même URITemplate. L'un d'eux est marqué avec un WebGet et l'autre avec un WebInvoke en utilisant PUT comme méthode.WCF - Routage Problème

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


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

Lorsque vous essayez de tester quelque chose dans le service, la meilleure façon de gérer une exception, en essayant de parcourir la méthode GET dans IE j'ai reçu une erreur AddsomethingNamed nécessaire un paramètre nommé NOM.

Je suis un peu déconcerté par cette réponse car je ne sais même pas comment cela se passait à la méthode PUT, d'après ce que je sais que les navigateurs Web ne prennent même pas directement en charge PUT.

Répondre

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

Dans votre code ci-dessus dans le modèle URI mentionné {name} qui signifie que votre méthode accepte un paramètre supplémentaire « name ».

Ainsi, votre signature de la méthode devrait être une des conditions suivantes

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

OU

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