我对WCF服务中的URI模板有疑问

时间:2010-06-11 20:10:24

标签: c# wcf

我有一个包含以下操作合同的网络服务,我的服务托管在http://localhost:9002/Service.svc/

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

如果提供了正确的filepath,这个Web服务将允许用户下载文件(假设我以某种方式找到了正确的文件路径)。

现在,我可以通过输入http://localhost:9002/Service.svc/Files/(Filepath}

从浏览器访问此服务

如果{filepath}是一个简单的字符串,它不是问题,但我想发送文件的位置。让我们说用户想要在服务器上下载文件C:\Test.mp3。但是如何将C:\Test.mp3作为{Filepath}传递?我在浏览器中输入http://localhost:9002/Service.svc/Files/C:\Test.mp3时出错。

我是网络服务新手,发现这个社区是获取问题答案的最快捷方式。

现在开始工作了。 需要使用System.web中的HttpServerUtility.UrlTokenDecode()

2 个答案:

答案 0 :(得分:2)

您不能输入“:”和“\”之类的特殊字符作为网址的一部分。它们需要进行URL编码。

答案 1 :(得分:2)

听起来你需要对字符串进行URL编码,然后在后端解码。将System.Web添加到项目中并使用System.Web.HttpUtility。UrlEncode()然后使用System.Web.HttpUtility.UrlDecode()