我使用WCF并使用这样的方法:
[OperationContract]
[WebInvoke(Method = "GET", UriTemplate = "LoadProducts/{key}/{price}")]
XmlDocument LoadProducts(string key, string price= null);
price
是string
,在LoadProducts
内我将尝试将其从字符串解析为双倍并执行其他操作。
但是在url中,我无法获取请求price
的任何参数,如'24 .25','0.253'等。它不允许任何带点的值。
本地主机:13448 / RestService.svc / LoadProducts /空/ 41.145
我收到错误“请查看以下网址并确保拼写正确。”
我该如何解决这个问题?
答案 0 :(得分:4)
点已经在URL中有意义,它们将目标主机名,IP地址或它们将资源与其扩展名分开的路径分开。您需要对请求网址进行URL编码。
在.NET中,有一个名为UrlEncode
的方法可以帮助您对URL进行编码。它是:
string url = "http://localhost/MyService/MyKey/24.25";
string encodedUrl = HttpUtility.UrlEncode(url);
查看UrlEncode的MSN文档以获取更多详细信息。
答案 1 :(得分:1)
我解决了我的问题。我将服务器从 Visual Studio Development Server 切换到本地IIS Web服务器,url在参数内部使用了点符号。