我有一个包含以下操作合同的网络服务,我的服务托管在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()答案 0 :(得分:2)
您不能输入“:”和“\”之类的特殊字符作为网址的一部分。它们需要进行URL编码。
答案 1 :(得分:2)
听起来你需要对字符串进行URL编码,然后在后端解码。将System.Web添加到项目中并使用System.Web.HttpUtility。UrlEncode()然后使用System.Web.HttpUtility.UrlDecode()