1

我使用 WCF 并有这样的方法:

[OperationContract]
[WebInvoke(Method = "GET", UriTemplate = "LoadProducts/{key}/{price}")]
XmlDocument LoadProducts(string key, string price= null);

pricestring,在里面LoadProducts我会尝试将它从字符串解析为双精度并执行我的其他操作。

但在 url 中,我无法请求任何参数,price如“24.25”、“0.253”等。它不允许任何带点的值。

本地主机:13448/RestService.svc/LoadProducts/null/41.145

我收到错误“请查看以下 URL 并确保其拼写正确。”

我该如何解决这个问题?

4

2 回答 2

4

点在 URL 中已经有意义,它们将目标主机名、IP 地址或在路径中将资源与其扩展分开。您需要对您的请求 URL 进行 URL 编码。

在 .NET 中有一种方法UrlEncode可以帮助您对 URL 进行编码。这是:

string url = "http://localhost/MyService/MyKey/24.25";

string encodedUrl = HttpUtility.UrlEncode(url);

有关更多详细信息,请查看UrlEncode的 MSN 文档。

于 2013-10-28T13:41:30.833 回答
1

我解决了我的问题。我将服务器从Visual Studio Development Server切换到Local IIS Web Server,url 在参数中采用点符号。

于 2013-10-29T06:20:57.530 回答