2010-10-26 13 views
3

J'ai développé un service web reste en utilisant le lien suivantComment passer les paramètres au service Web repos sans utiliser le symbole (?)?

http://www.c-sharpcorner.com/UploadFile/dhananjaycoder/simplerestservice11172009221218PM/simplerestservice.aspx

Maintenant, je suis passer des paramètres à ce repos service Web en utilisant l'URL. Je le passage de paramètres comme suit

http://localhost:50362/PMTSRest/Service.svc/GetProjects?ProjectID=1

Maintenant, je veux savoir est-il un moyen d'enlever le point d'interrogation dans l'URL & au lieu de l'utiliser tout autre symbole ou comment passer des paramètres au reste service web sans utiliser le symbole (?) Pouvez-vous s'il vous plaît me fournir tout code ou lien à travers lequel je peux résoudre le problème ci-dessus?

+0

Vous pouvez utiliser n'importe quelle structure que votre côté serveur est capable de décoder. Style de répertoire avec des barres obliques, un autre symbole, etc ... Quels bénéfices espérez-vous obtenir en évitant le symbole '?' – JAL

+0

Pourquoi avez-vous besoin de faire cela? –

+0

Pouvez-vous s'il vous plaît expliquer en détail avec l'exemple de codage comment utiliser le style de dictionnaire avec des barres obliques, un autre symbole, etc.? –

Répondre

2

Je pense que vous demandez comment placer les paramètres dans un segment de chemin. par exemple.

[ServiceContract] 
public interface ISearch 
{ 
    [OperationContract] 
    [WebGet(UriTemplate = "/Search/{name}", BodyStyle = WebMessageBodyStyle.Bare)] 
    string GetGreeting(string name); 
} 

Est-ce ce que vous cherchez?

+0

oui, mais comment passer la même variable si elle est int? (Dans le cas ci-dessus, le nom est une chaîne). J'essaye pour la variable d'int mais donne l'erreur L'opération 'GetTasksForThisProject' dans le contrat 'ISearch' a une variable de chemin appelée 'ProjectID' qui n'a pas le type 'chaîne'. Les variables pour les segments de chemin UriTemplate doivent avoir le type 'chaîne'. –

+0

J'utilise le code suivant –

+0

[OperationContract] // [WebGet (UriTemplate = "/ GetTasksForThisProject? ProjectID = {} ProjectID", BodyStyle = WebMessageBodyStyle.Bare)] [WebInvoke (méthode = "GET", // UriTemplate = "/ GetTasksForThisProject ProjectID = {} ProjectID?", UriTemplate = "/ GetTasksForThisProject/{} ProjectID", ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json)] Liste GetTasksForThisProject (int ProjectID); –

1

Peut-être utiliser HTTP POST au lieu de HTTP GET pour masquer ces paramètres?