2017-07-08 11 views
0

J'appelle mon service comme vous pouvez le voir comme ça:formats URI ne sont pas pris en charge dans webclient C#

public ReceptionView ReceptionViewByReceptionId(string receptionId) 
    { 
     ClientRequest.Headers["Content-type"] = "application/json"; 
     ClientRequest.Encoding = System.Text.Encoding.UTF8; 
     string result = ClientRequest.DownloadString("http://localhost:1111" + " /ReceptionService.svc/ReceptionViewByReceptionId/" + receptionId); 

     var javascriptserializer = new JavaScriptSerializer(); 
     return javascriptserializer.Deserialize<ReceptionView>(result); 
    } 

mais je reçois cette erreur dans DownloadString:

{"URI formats are not supported."} 

mon service fonctionne bien et quand j'appelle mon service par navigateur comme ceci:

http://localhost:1111/ReceptionService.svc/ReceptionViewByReceptionId/1 

Je reçois le résultat attendu .mais dans ma demande je peux « T

Mon interface de service

[WebGet(UriTemplate = "/ReceptionViewByReceptionId/{receptionId}", RequestFormat = WebMessageFormat.Json, 
    ResponseFormat = WebMessageFormat.Json)] 

    ReceptionView ReceptionViewByReceptionId(string receptionId); 

Comme une note ma fonction a travaillé avant sans aucune erreur, mais aujourd'hui retourne soudainement cette erreur.

Mon résultat Fiddler dans le navigateur: enter image description here

+0

Utilisez le sniffer avec votre navigateur et connectez-vous à votre service et regardez le format du message. Ce n'est pas seulement l'URL et la chaîne. Il y a d'autres informations d'en-tête qui doivent être incluses. – jdweng

+0

@jdweng je l'ai tracé dans un violoneur mais l'url de service n'a jamais appelé pourquoi? –

+0

Le résultat est 200 ce qui est fait pour que la connexion se termine avec succès. Il est possible que le cookie expiré ou en cours d'exécution avec votre application qui n'a pas terminé installé un mauvais cookie. Habituellement, lorsque je suis en train de déboguer ces problèmes, je recommande après avoir changé de code de supprimer les cookies du navigateur IE afin que les mauvais résultats précédents ne conduisent pas à la confusion. – jdweng

Répondre

0

Le problème était ici l'espace " /Reception comme vous pouvez le voir dans l'url

string result = ClientRequest.DownloadString("http://localhost:1111" + " /ReceptionService.svc/ReceptionViewByReceptionId/" + receptionId); 

j'ai enlevé et que tout a bien fonctionné. Utilisez un renifleur comme wirehark ou violoneux pour apprendre quelque chose.