2010-06-11 4 views
0

j'ai un service web avec suivant contrat d'exploitation et mon service est hébergé à http://localhost:9002/Service.svc/J'ai une question sur les modèles d'URI dans WCF services

[OperationContract] 
[WebGet(UriTemplate = "/Files/{Filepath}")] 
Stream DownloadFile(string Filepath); 

Ce service web laisseraient aux utilisateurs télécharger le fichier, si le filepath approprié est fourni (en supposant, je trouve en quelque sorte ce chemin de fichier approprié).

Maintenant, je peux accéder à ce service à partir d'un navigateur en tapant, http://localhost:9002/Service.svc/Files/(Filepath}

Si {filepath} est une chaîne simple, ce ne est pas un problème, mais je veux envoyer l'emplacement du fichier. Supposons que les utilisateurs veulent télécharger le fichier C:\Test.mp3 sur le serveur. Mais comment puis-je passer C:\Test.mp3 en tant que {Filepath}? J'obtiens une erreur lorsque je tape http://localhost:9002/Service.svc/Files/C:\Test.mp3 dans le navigateur. Je ne connais pas encore les services Web et je trouve que cette communauté est le moyen le plus rapide d'obtenir des réponses à mes questions.

Cela a fonctionné maintenant. besoin d'utiliser HttpServerUtility.UrlTokenDecode() de System.web

+0

Référence System.Web, puis appelez 'HttpUtility.UrlEncode()' sur votre chemin de fichier - qui active la : et \ dans les codes URL qui devraient être bien sur l'URL –

+0

Il ne fonctionne toujours pas, il encode ':' et '\' mais n'encode pas '.'. Des idées? – Debby

Répondre

2

Vous ne pouvez pas taper des caractères spéciaux comme ":" et "\" dans le cadre d'une URL. Ils devront être encodés en URL.

2

Il semble que vous ayez besoin de l'URL pour encoder la chaîne, puis décoder l'arrière-plan. Ajoutez System.Web à votre projet et utilisez System.Web.HttpUtility .UrlEncode() puis System.Web.HttpUtility.UrlDecode()

Questions connexes