2009-05-11 5 views
2

Je n'ai créé que l'application de service WCF la plus élémentaire pour faire du prototypage, mais je n'arrive pas à faire fonctionner l'implémentation WebGet.L'application de service WCF renvoie 404 à l'aide de WebGet

Voici mon interface:

[ServiceContract] 
public interface IService 
{ 
    [OperationContract] 
    [WebGet(UriTemplate = "/rest/{value}")] 
    string Test(string value); 
} 

est ici la mise en œuvre:

public string Test(string value) 
{ 
    return string.Format("You entered: {0}", value); 
} 

Mais si je vais à http://localhost:3305/rest/Hello dans mon navigateur, je reçois un 404. J'utilise le serveur Web VS 2008.

Répondre

4

Je pense qu'il vous manque le nom de service actuel.

http://localhost:3305/yourservicename.svc/rest/Hello

+0

Eh oui - ne pas oublier le fichier SVC dans votre URL! –

+0

Cela a fonctionné. J'ai également dû modifier la liaison de terminaison pour qu'elle soit "webHttpBinding" et créer un comportement de point de terminaison qui spécifiait - probablement des échecs évidents pour les personnes familières avec ce genre de choses, mais difficilement détectables pour les personnes débutant en WCF. Merci encore. – jerhinesmith

+0

Qu'avez-vous changé dans Web.Config pour que cela fonctionne avec webHttpBinding? – glarkou

1

Mise à jour

config.SetServiceOperationAccessRule("*", ServiceOperationRights.All); 

public static void InitializeService(DataServiceConfiguration config) 
    { 
     // TODO: set rules to indicate which entity sets and service operations are visible, updatable, etc. 
     // Examples: 
     config.SetEntitySetAccessRule("*", EntitySetRights.AllRead); 
     config.SetServiceOperationAccessRule("*", ServiceOperationRights.All); 
     //config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V2; 
    } 
Questions connexes